私はrequest-promise node moduleを使用しています。私はドキュメントを以下の、と私はすべてを正しく設定しているべきだと考えてきた、しかし、私は次のエラーを取得しています:ノード内の要求の約束が期待通りに機能しない
Unhandled rejection StatusCodeError: 400 - "{\n \"error\" : {\n
\"status\" : 400,\n \"message\" : \"invalid id\"\n }\n}" at new StatusCodeError (/Users/fitz035/Desktop/sony/travelLand/node_modules/request-promise/node_modules/request-promise-core/lib/errors.js:32:15)
私のコードは次のようになります。
var request = require('request');
var rp = require('request-promise');
rp('apiOne' + mood)
.then(function(error, response, body) {
console.log(body)
}
}).then(function(error) {
for (var i = 0; i < array; i++) {
rp('apiTwo', function(error, response, body) {
console.log(body))
});
}
}).then(function(error, response, body) {
rp('apiThree' + songListUrl, function(error, response, body) {
console.log(body))
});
})
.catch(function(err) {
console.log(err)
});
EDIT
は、これは正しいアプローチですか?
var options = {
uri: 'https://jsonplaceholder.typicode.com/posts/1',
json: true
}
rp(options).then(function(data){
console.log(data)
var optionsTwo = {
uri: 'http://www.google.com',
}
rp(optionsTwo).then(function(data){
console.log(data)
console.log(answer);
})
})
私はこの動作の仕組みを理解するためには改善が必要だと思います。前の関数が応答を返すまで、 'then'関数がトリガーしない印象を受けました。 –
@phantom:' then'を渡すコールバックは、約束が解決されるか、拒否されるまで呼び出されません。より具体的には: 'then'の最初の引数として渡すコールバックは、/約束が解決されたときにのみ呼び出されます。 2番目の引数として2番目のコールバックを渡すと、約束が拒否されない限り、/は呼び出されません。 'catch'の唯一の引数として渡すコールバックは、' then'の第2引数のようなものです。これは、約束が拒否されたときにのみ呼び出されます。 –
@tj私は自分の質問を更新しました。それは動作するようです。あなたがここの上司であるため、これが正しいアプローチであることを確認できますか:-)? –