nodejs在循环中承诺

时间:2018-05-01 08:12:53

标签: node.js callback

let token = null;
let allData = [];
while( true) {
  getData( token).then( function( data, nextToken){
    token = nextToken;
    allData.push( data);
  });
  if( token == null) break;
}
return allData;

如您所知,此代码无法正常工作,因为while循环将在标记值设置为nextToken值之前继续。有没有办法获取所有数据?

1 个答案:

答案 0 :(得分:1)

你可以使用递归函数。

function getDataRecursive(token, data = []) {
    return getData(token).then((newData, nextToken) => {
        if(nextToken === null) {
            return [...data, newData];
        }
        return getDataRecursive(nextToken, data);
    });
}

getDataRecursive(token).then((data) => {
    console.log(data); // Will contain your array of data
});