make函数等待返回nodejs的承诺

时间:2015-10-26 21:25:05

标签: node.js q

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

1 个答案:

答案 0 :(得分:2)

当你写promise2()时,你立即执行它。尝试:

promise1().then(promise2);