尝试使用 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 方法放入数组时,它们似乎永远不会执行。变量响应只产生一组函数,而不是来自 beats api 的一组响应。我需要更改什么才能使响应返回类似于 firstCall 的对象数组?