有点复杂。让我们看一下代码:
requestAccessToken().then(function(requestResult) { // this is the first then()
if(requestResult.ok == 1) {
return document;
}
}).then(function(document) { // this is the second then()
return db.update(updateArgu); // here, db.update will return a promise obj
}).then(function(result) { // this is the last then()
console.log('update ok');
console.log(result);
});
由于db.update(updateArgu)
将返回一个promise对象,因此可以添加.then()
方法,例如db.update().then()
。
但我想保留主链requestAccessToken().then().then()
,所以我在第二个db.update()
中返回了then()
。输出是:
app-0 update ok
app-0 undefined
db.update
代码为:
exports.update = function(arguments) {
var name = arguments.name;
var selector = (arguments.selector) ? arguments.selector : {};
var document = (arguments.document) ? arguments.document : {};
var options = (arguments.options) ? arguments.options : {};
return Promise(resolve, reject) {
MongoClient.connect(DBURL, function(err, db) {
if(err) throw err;
db.collection(name).update(selector, document, options, function(err, result) {
db.close();
if(err) {
reject(err);
} else {
resolve(result);
}
});
});
}
}
您可以看到它有resolve(result)
,如何将其转移到上一个then()
?
答案 0 :(得分:0)
我会对答案做出评论。
你在哪里:
return Promise(resolve, reject) {
...
}
它应该是:
return new Promise(function(resolve, reject) {
...
});