用q-io嵌套承诺

时间:2013-12-09 05:53:05

标签: javascript node.js http promise q

我试图弄清楚这种回报另一种承诺的承诺会成为回报的价值。这就是我在维基上的Q文档中读到的内容。 https://github.com/kriskowal/q#tutorial

这是理想的情况,因为我正在使用q-io / http,它使用promise来发出请求。但是,该函数在新的promise中返回正文的值。

而不是将我的其余代码嵌套在第一个函数中。我想在嵌套的promise完成时收到通知。但是,由于范围,我似乎无法做到。但我一直在读,我的外在功能应该成为内在承诺的价值。我错过了什么吗?

实施例

module.exports = function (obj) {
  var getFiles = HTTP.request(obj);

  getFiles
   .then(function(res) {
      return res.body.read()
    });
  return getFiles;
};

我想在res.body.read()使用Q.all()履行其承诺时收到通知,但我不知道如何获得该值。我觉得getFiles应该成为内心的承诺。正确?

1 个答案:

答案 0 :(得分:2)

  

我觉得getFiles应该成为内心的承诺。正确?

没有。承诺不会改变它的价值。但是,.then方法确实会返回一个新的promise,该promise将使用“inner promise”read方法的结果解析(将在解析getFiles时调用)。

您可以将代码缩短为

module.exports = function (obj) {
  return HTTP.request(obj).then(function(res) {
    return res.body.read()
  });
};