尝试将Q promises库与couchDB和Nano一起使用。我有以下代码,并且消息显示在控制台中,但未创建数据库。
var nano = require('nano')('http://localhost:5984');
var Q = require('q');
var deleteDB = function(database) {
console.log('deleteDB');
var deferred = Q.defer();
nano.db.destroy('alice', deferred.resolve);
return deferred.promise;
};
var createDB = function(database) {
console.log('createDB');
var deferred = Q.defer();
nano.db.create('alice', deferred.resolve);
return deferred.promise;
}
deleteDB('promises').then(createDB('promises'));
有谁知道为什么这不起作用?
答案 0 :(得分:1)
一个问题是then()接受一个函数作为解析promise时执行的参数。您的代码将在deleteDB之后立即执行createDB,并将生成的promise传递给then()。
另一个问题是您没有等待createDB返回的承诺来解决。
所以我觉得你想要这样的东西:
deleteDB('promises')
.then(function () { return createDB('promises'); })
.then(function () { console.log('All finished'); });
或者如果您更改了createDB,以便它不会接受参数
deleteDB('promises')
.then(createDB)
.then(function () { console.log('All finished'); });
注意createDB之后缺少()。