繁体   English   中英

承诺-嵌套函数不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM