我正在使用Q库,希望让promise2函数等待promise1函数完成执行。
在下面的示例中,promise2函数在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
当您编写promise2()
时,您会立即执行它。尝试:
promise1().then(promise2);