2017-01-11 13 views
-1

NodeJsリクエストモジュールを使用してHTTPリクエストをチェーンしようとしています。私の場合、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。 (ES6を使用している場合やrequest-promise-native)あなたはrequestとの約束を使用するrequest-promiseを使用することができます。

// 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 
}); 
関連する問題