我试图理解这样一个观点,即承诺回报另一个承诺就成为回报的价值。这就是我在wiki上的q文档中看到的。https://github.com/kriskowal/q#tutorial
这是理想的情况,因为我正在使用q-io/http,它使用一个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应该成为你内心的承诺。对吗?

最佳答案

我觉得getfiles应该成为你内心的承诺。对吗?
不。承诺不会改变它的价值。但是,.then方法确实返回一个新的promise,该promise将通过“inner promise”read方法的结果来解决(在解决getFiles时将调用该方法)。
您可以将代码缩短为

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

09-25 16:35