嵌套承诺与q-io

Nesting promises with q-io

本文关键字:q-io 承诺 嵌套      更新时间:2024-05-18

我试图理解这样一种想法,即返回另一个承诺的承诺将成为返回的值。这就是我在维基上的Q文档中读到的内容。https://github.com/kriskowal/q#tutorial

这是一种理想的情况,因为我使用的是q-io/http,它使用promise来发出请求。但是,函数会在一个新的promise中返回实体的值。

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

Ex。

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将使用"内部promise"read方法的结果进行解析(解析getFiles时将调用该方法)。

您可以将代码缩短为

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