Jos*_*man 4 node.js promise node-request
是否有一种较少嵌套的方式来实现以下目的request-promise:
r = require('request-promise');
r(url1).then(function(resp1) {
// Process resp 1
r(url2 + 'some data from resp1').then(function(resp2) {
// Process resp 2
// .....
});
});
Run Code Online (Sandbox Code Playgroud)
每个请求都取决于最后一个的结果,因此它们需要是顺序的.但是,我的一些逻辑需要最多五个连续请求,这会引起很多嵌套的噩梦.
我错了吗?
您可以Promise在onFulfilled提供的功能中返回一个Promise.then:
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
// .....
});
Run Code Online (Sandbox Code Playgroud)
这使您可以处理多个调用而不会陷入嵌套的噩梦;-)
此外,如果您不关心哪个确实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
// ...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3553 次 |
| 最近记录: |