[英]Promise - nested function doesn't works
我想知道为什么以下代码不起作用,毕竟它只是嵌套函数:
var calculus = new Promise((resolve, reject) => (resolve) => resolve(3)) var calculus2 = new Promise((resolve, reject) => { () => resolve(4) }) calculus.then((result) => console.log(result)) calculus2.then((result) => console.log(result))
任何提示都会很棒,谢谢
您需要调用嵌套函数。
var calculus = new Promise((resolve, reject) => ((resolve) => resolve(3))(resolve)) calculus.then((result) => console.log(result))
如果您不想在最后重复(resolve)
,则可以摆脱嵌套函数的参数。
var calculus = new Promise((resolve, reject) => (() => resolve(3))()) calculus.then((result) => console.log(result))
无论哪种情况,嵌套函数都没有太多意义,您可以编写:
var calculus = new Promise((resolve, reject) => resolve(3)) calculus.then((result) => console.log(result))
注意:Barmar回答的速度更快,在阅读时,我想我误解了您的要求。 但是,我仍然要发布此消息,因为这可能有助于弄清示例中的实际情况。
您的第一行,
var calculus = new Promise((resolve, reject) => (resolve) => resolve(3))
返回与此类对象可比的东西(尽管在幕后有很大不同):
{
then: function(callback) {
callback(function (resolve) {
resolve(3);
});
}
}
因此,要使用此功能,您需要执行以下操作:
calculus.then((resolver) => {
resolver(function (value) {
console.log(value); // 3
});
});
我认为您可能打算这样做:
const calculus = new Promise((resolve, reject) => resolve(3));
calculus.then((result) => console.log(result))
请记住, () => {}
与function() {}
类似(虽然不完全相同),并且() => something
类似于function () { return something }
所以你的原始代码是这样的
var calculus = new Promise(function (resolve, reject) {
return function (resolve) {
resolve(3)
};
});
当你想要的时候
var calculus = new Promise(function (resolve, reject) {
resolve(3);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.