2017-01-11 7 views
-1

Я пытаюсь связать http-запросы с помощью модулей запроса NodeJs.Как сделать http-запросы в моем случае?

Пример:

var options = { 
    url: 'http://example.com' 
}; 

request.get(options, function(error, response, body){ 
    var first = JSON.parse(body); 

    options.url = 'http://example.com/second' + first.id; 

    //nested second request 
    request.get(options, function(error, response, body){ 
    var second = JSON.parse(body); 

    options.url = 'http://example.com/third' + second.title; 

    //another nested request 
    request.get(options, function(error, response, body){ 
     var third = JSON.parse(body); 
     return third; 
    }); 
    }) 
}) 

Есть ли лучший способ сделать это цепным обещало?

+0

Вы должны использовать обещание. – SLaks

+0

'Я пытаюсь связать обещание' - так как у вас нет никакого обещания в коде, вы не можете связать их –

+0

@JaromandaX хорошие моменты, я меняю свой вопрос на http-запросы. – Jwqq

ответ

1

Библиотека запросов does not support promises directly. Вы можете использовать request-promise (или request-promise-native при использовании ES6) использовать посылы с request:

// run `npm install request request-promise` first 

var request = require('request-promise'); 

var options = { 
    uri: 'http://example.com', 
    json: true // Automatically parses the JSON string in the response 
}; 

request.get(options).then(function(body){ 
    //second request 
    options.url = 'http://example.com/second' + body.id;  
    return request.get(options) 
}).then(function(body){ 
    //third request 
    options.url = 'http://example.com/third' + body.title; 
    return request.get(options) 
}).then(function(body){ 
    return body; 
}).catch(function(error){ 
    // error handling 
}); 
Смежные вопросы