微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 具有请求承诺的顺序请求

是否存在使用请求承诺实现以下内容的嵌套方式:

r = require('request-promise');

r(url1).then(function(resp1) {
    // Process resp 1

    r(url2 + 'some data from resp1').then(function(resp2) {
        // Process resp 2
        // .....
    });
});

每个请求都取决于最后一个的结果,因此它们需要是顺序的.但是,我的一些逻辑需要最多五个连续请求,这会引起很多嵌套的噩梦.

我错了吗?

解决方法

你可以在提供给Promise.then的onFulfilled函数中返回一个Promise:

r = require('request-promise');

r(url1).then(function(resp1) {
    // Process resp 1
    return r(url2 + 'some data from resp1');
}).then(function(resp2) { 
    // resp2 is the resolved value from your second/inner promise
    // Process resp 2
    // .....
});

这使您可以处理多个调用而不会陷入嵌套的噩梦;-)

此外,如果您不关心哪个Promise失败,这会使错误处理变得更容易:

r = require('request-promise');

r(url1).then(function(resp1) {
    // Process resp 1
    return r(url2 + 'some data from resp1');
}).then(function(resp2) { 
    // resp2 is the resolved value from your second/inner promise
    // Process resp 2
    // ...
    return r(urlN + 'some data from resp2');
}).then(function(respN) {
    // do something with final response
    // ...
}).catch(function(err) {
    // handle error from any unresolved promise in the above chain
    // ...
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐