如何使用带有许多url的request-promise.js来调用HTTP请求?

时间:2016-11-08 17:50:50

标签: javascript request promise

我想问一下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);
});

感谢您的关注,非常感谢您能帮助我。

2 个答案:

答案 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)

您可以使用processOutputPromise.all()

Array.prototype.map()