我想问一下request-promise.js。我很难解决许多网址的呼叫链承诺,因为我不知道如何在同一个承诺中调用许多网址。
首先,我想解释下面的代码。在first_link的第一个承诺中将返回许多网址,我将把网址传递给第二个承诺。
var req_promise = require('request-promise');
var first_link = 'http://test.com';
req_promise(first_link)
.then(function (result){
console.log('Promise 1 finished..');
for (var i=0; i<result.length; i++){
var uri = (result[i]['uri']);
console.log('Promise url : ' + uri + ' is being called....');
// in this code below, it will run only the first index and the promise will finish
// but i want to make it to run for many urls.
return req_promise(uri);
}
})
.then(function (result2){
console.log('Promise 2 finished..');
console.log(result2);
})
.catch(function(err){
console.log(err);
});
感谢您的关注,非常感谢您能帮助我。
答案 0 :(得分:1)
所以我设法通过url将Promise.map中的promises分组来获得seconde承诺中的值
var req_promise = require('request-promise'); var first_link = 'http://test.com'; req_promise(first_link) .then(function (result){ // result consist of objects in array // the object have uri and title properties // result.uri & result.title console.log('Promise 1 finished..'); return result; }) .then(function (result2){ Promise.map(data, function(d){ return req_promise(data.uri).then((result)=>{return result;}); }).then((result) => {return result}); }) .catch(function(err){ console.log(err); });
我希望如果你有同样的问题,它会希望其他人。
答案 1 :(得分:0)
您可以使用processOutput
,Promise.all()
Array.prototype.map()