【发布时间】:2015-04-11 19:46:28
【问题描述】:
我有一个对象的承诺,并希望获得该对象的属性的承诺。我该怎么做?
var user = Q.nfcall(User.findOne, {
_id: userId
});
var accessToken = Q.Promise(function (resolve, reject) {
user.then(function (user) {
if (!user) return reject(new Error('User not found.'));
if (!user.github.accessToken) return reject(new Error('Access token not found.'));
return resolve(user.github.accessToken);
}, function(err) {
return reject(err);
});
});
这是我迄今为止尝试过的方法,但我不确定它是否是最好的(或最正确的)方法。
【问题讨论】:
-
是的,这看起来不错。甚至 ES6 Promises 也只有类似的结构。
-
你为什么不链接
user呢?user.then(function() {}, function() {})。你也可以从 promise 返回一个标量值。 -
你没有返回
resolve,所以accessToken是undefined -
@KrzysztofSafjanowski 已更新! ^
-
我强烈推荐阅读 Promises/A+ 规范。它不长,很容易理解,适用于几乎所有的 Promise 库:promisesaplus.com
标签: javascript promise q