让函数等待返回nodejs的承诺



我正在使用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);

相关内容

  • 没有找到相关文章

最新更新