#javascript #ecmascript-6 #es6-promise
#javascript #ecmascript-6 #es6-обещание
Вопрос:
Я создаю обещание, которое будет принимать входные данные, а затем возвращать к нему ( 3). Затем я хочу распечатать результат. Почему я получаю ошибку?
var prom = new Promise((item) => item 3);
prom(5).then(console.log(result));
Я новичок в обещаниях. Пожалуйста, помогите.
Ответ №1:
Прежде всего, вы не предоставляете обещание с аргументами. Если вы хотите создать обещание с возвращаемым значением, вам необходимо создать функцию, которая возвращает обещание.
Во-вторых, then
принимает функцию и предоставляет ей аргумент результата, который вы можете использовать в своем console.log
.
// var prom = new Promise((item) => item 3);
const prom = item => new Promise((resolve, reject) => resolve(item 3));
// prom(5).then(console.log(result));
prom(5).then(result => console.log(result));
Комментарии:
1. Pl, также добавьте исходный код, где без переноса функций вы исправили и получили ответ. Это также было полезно.
2. вы имеете в виду это?
3. Да, но сделайте 2 отдельных примера, не просто добавляйте в качестве комментария. Пусть оба работают. Пусть пользователь решает, чему он хочет следовать.
4. Это хорошая идея, но в этом случае ваш код выдавал ошибку, поэтому объединение его с другим кодом не сработает, вы увидите только ошибку, а мой код даже не будет выполнен.
Ответ №2:
Вы не предоставляете значение обещанию таким образом.
Единственное, что вы получаете в своем обещании, это функция разрешения и отклонения, а не значение, которое вы передали там. Это не функция, это объект.
Вместо этого вы можете обернуть его в функцию, подобную этой:
function prom(item) {
return new Promise((resolve, reject) => resolve(item 3));
}
prom(5).then(result => console.log(result));