澄清 node.js + promises 片段
Posted
技术标签:
【中文标题】澄清 node.js + promises 片段【英文标题】:Clarification of node.js + promises snippet 【发布时间】:2016-01-21 11:27:34 【问题描述】:How do I convert an existing callback API to promises? 接受的答案有这个例子:
function getUserDataAsync(userId)
return new Promise(function(resolve,reject)
getUserData(userId,resolve,reject);
);
问题:
Promise
的主体不应该返回一些东西,而不仅仅是调用getUserData
(至少在实际代码中,而不是作为 promise 演示练习)?
这个特殊的Promise
也是一个闭包吗?它似乎关闭了userId
,因为getUserDataAsync
使用userId
创建并返回了一个新的Promise
实例,但我想确定一下。
【问题讨论】:
1.编号The return value is ignored by thePromise
constructor anyway。 2.是的,传递给构造函数的函数表达式形成了一个闭包。
【参考方案1】:
Promise 的主体不应该返回一些东西,而不仅仅是调用
getUserData
(至少在实际代码中,而不是作为 Promise 演示练习)?
不,没必要。事实上,从Promise
构造函数返回一个值是没有效果的。 只有resolve
和reject
函数可以实现Promise
。
这个特殊的
Promise
也是一个闭包吗?它似乎关闭了userId
,因为getUserDataAsync
使用userId
创建并返回了一个新的Promise
实例,但我想确定一下。
是的,传递给Promise
构造函数的函数关闭了userId
。
【讨论】:
【参考方案2】:不,它不应该返回任何东西,因为在那个时间点没有任何东西可以返回,这就是你使用 Promise 的原因。
是的。
【讨论】:
以上是关于澄清 node.js + promises 片段的主要内容,如果未能解决你的问题,请参考以下文章
[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist