bluebird とジェネレーターの koa を使用して、複数のリクエストを Beats API に送信しようとしています。
いくつかのドキュメントを読んだ後、私は以下がうまくいくと考えました
var request = require('co-request'),
_ = require('lodash'),
Promise = require('bluebird');
request = Promise.promisifyAll(request);
module.exports.getTracks = function *tracks(){
firstCall = yield makeAPICall('users/' + me + '/mymusic/tracks?limit=150');
total = firstCall.body.info.total;
total -= 150;
tracks = firstCall.body.data;
//Beats only allows a maximum of 150 tracks per call
//If more tracks are needed then the remainder is called in sets of 150
var offset = 150;
while (total > 0) {
promises.push(makeAPICall('users/' + me + '/mymusic/tracks?limit=150&offset=' + offset));
offset += 150;
total -= 150;
}
var responses = yield(Promise.all(promises));
}
function makeAPICall (query){
var authOptions = {
url: 'https://partner.api.beatsmusic.com/v1/api/' + query,
headers: { 'Authorization': 'Bearer ' + accessToken },
json: true
};
return request.get(authOptions);
}
メソッド makeAPI 呼び出しは、firstCall で使用すると期待どおりに機能しますが、何らかの理由で、配列に makeAPICall メソッドを配置し始めると、実行されないように見えます。変数 response は、beats API からの応答の配列ではなく、関数の配列のみを生成します。応答が firstCall と同様のオブジェクトの配列を返すようにするには、何を変更する必要がありますか?