mus*_*oom 3 javascript promise q
我有一个对象的承诺,并希望获得该对象的属性的承诺.我该怎么办?
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);
});
});
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的,但我不确定它是否是最好的(或最正确的)方式.
不要使用延迟反模式1!没有必要使用Promise构造函数,.then已经返回了对其回调结果的承诺:
var accessToken = user.then(function(user) {
if (!user) throw new Error('User not found.');
if (!user.github.accessToken) throw new Error('Access token not found.');
return user.github.accessToken;
});
Run Code Online (Sandbox Code Playgroud)
[1]:你已经看到了自己的错误:-)