0
我正在使用Q库并希望使promise2函数等待promise1函数完成执行。make函数等待承诺返回nodejs
在以下示例中,promise1函数在promise1函数完成执行之前得到执行。
我在这里做错了什么?
var Q = require("q");
var fs = require('fs');
function promise1() {
var deferred = new Q.defer();
fs.readFile('hostname.json', function (err, data) {
if (err){
return console.error(err)
}else {
console.log('file read');
return deferred.resolve(JSON.parse(data));
}
});
return deferred.promise;
}
function promise2(){
var deferred = new Q.defer();
var path = 2;
console.log("2");
return deferred.resolve(path);
}
Q(promise1())
.then(promise2());
这里是工作的例子,可能会给出错误,因为readfile不存在,但它确实存在于我的开发环境中。
I get the following result when I run:
>2
>file read
Result I want:
>file read
>2
所以它应该是Q(promise1()),然后(promise2)。 – patz
它确实奏效,但不明白为什么, – patz
'Q()'对我的理解是多余的。但是当javascript看到一个方法调用'()'时,它执行该函数。在你原来的情况下,为了解决你调用'.then()'而不是函数定义的函数调用。您可以通过[here](https://github.com/kriskowal/q)完整阅读他们的文档。 – Tony