Node.js + Promise代码片段的澄清

3

对于如何将现有的回调API转换为Promises问题的被接受答案,有这个示例:

function getUserDataAsync(userId){
    return new Promise(function(resolve,reject){
         getUserData(userId,resolve,reject);
    });
}

问题:

  1. 在实际代码中,Promise的主体部分应该返回一些内容,而不仅仅是调用getUserData(至少在实际代码中不是作为promise演示练习),这样做对吗?

  2. 这个特定的Promise是否也是闭包?看起来它会关闭userId,因为getUserDataAsync创建并返回一个新的Promise实例,其中使用了userId,但我想确定一下。


  1. 不需要。Promise构造函数忽略了返回值
  2. 是的,传递给构造函数的函数表达式形成了一个闭包。
- Bergi
2个回答

4

Promise的主体是否应该返回一些东西,而不仅仅是调用getUserData(至少在实际代码中,不是作为promise演示练习)?

不需要,实际上从Promise构造函数返回一个值将没有任何效果。只有resolvereject函数才能实现Promise

这个特定的Promise也是闭包吗?似乎它封闭了userId,因为getUserDataAsync使用userId创建并返回一个新的Promise实例,但我想确认一下。

是的,传递给Promise构造函数的函数封闭了userId


0
  1. 不应该返回任何东西,因为在那个时间点上没有任何东西可以返回,这就是你使用 promise 的原因。

  2. 是的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接