【发布时间】:2016-04-12 15:41:26
【问题描述】:
function saveToTheDb(value) {
return new Promise(function(resolve, reject) {
db.values.insert(value, function(err, user) { // remember error first ;)
if (err) {
return reject(err); // don't forget to return here
}
resolve(user);
})
}
}
这是我从here 看到的代码。
我对 return 关键字感到困惑。
对于resolve(user);,我需要return吗?
对于reject(user);,我需要return吗?
【问题讨论】:
-
不,你不需要返回,你只需要调用回调解析/拒绝函数。
-
它有
return reject(err)来停止该功能。替代方案是if (err) { reject(err); } else { resolve(user); } -
@Phil - 虽然在这个例子中它并不重要,因为 Promise 只能被履行/拒绝一次,所以如果拒绝被调用,resolve 将被有效地忽略
-
@Phil 你能详细解释一下吗?对于其他回调,必须使用
retrun。 -
看在上帝的份上 - 不要手动编写此代码 - 您可以使用一个库(如 bluebird),它会一次性为您生成回调 API 的包装器。