我正在使用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
答案 0 :(得分:2)
当你写promise2()
时,你立即执行它。尝试:
promise1().then(promise2);