【发布时间】:2021-03-28 21:00:54
【问题描述】:
我正在创建一个承诺,它将接受一个输入,然后返回 (+3) 给它。然后我想打印结果。为什么我会收到错误消息?
var prom = new Promise((item) => item+3);
prom(5).then(console.log(result));
我是 Promises 的新手。请帮忙。
【问题讨论】:
标签: javascript ecmascript-6 es6-promise
我正在创建一个承诺,它将接受一个输入,然后返回 (+3) 给它。然后我想打印结果。为什么我会收到错误消息?
var prom = new Promise((item) => item+3);
prom(5).then(console.log(result));
我是 Promises 的新手。请帮忙。
【问题讨论】:
标签: javascript ecmascript-6 es6-promise
首先,您不提供带有参数的承诺。如果你想创建一个有返回值的promise,你需要创建一个返回promise的函数。
其次,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));
【讨论】:
您不会以这种方式为承诺提供价值。
你在你的 Promise 中得到的唯一的东西是 resolve 和 reject 函数,而不是你在那里传递的值。它不是一个函数,它是一个对象。
相反,您可以将其包装在这样的函数中:
function prom(item) {
return new Promise((resolve, reject) => resolve(item+3));
}
prom(5).then(result => console.log(result));
【讨论】: