我想创建一个循环AWS lambda函数的promise节点函数,但我看不出蓝鸟承诺怎么可能。 你有这个实现的例子吗?
var lambda = new AWS.Lambda();
const lambdaInvokeAsync = Promise.promisify(lambda.invoke, {context:
lambda});
for(var page = 1; page <= totalPages; page++){
var params = {
FunctionName: MOCK_API_FUNCTION /* required */,
Payload: '{"page":'+page+', "limit": '+limit+', "retrievalDate":'
+retrievalDate+ '}';
};
return lambdaInvokeAsync(params)
.then((result) => {
console.log('Successfully retrieve data');
var dataPerPage = JSON.parse(result.Payload).data;
dataArr.push(dataPerPage);
return dataArr;
});
}
答案 0 :(得分:0)
aws-sdk
支持自v2.3.0以来的承诺。
您可以使用lambda.invoke(params).promise()
返回承诺。
这样,您的代码就变成......
const lambda = new AWS.Lambda();
const invokes = [];
for (let page = 1; page <= totalPages; page++) {
const request = lambda.invoke({
FunctionName: MOCK_API_FUNCTION /* required */ ,
Payload: '{"page":' + page + ', "limit": ' + limit + ', "retrievalDate":' +
retrievalDate + '}';
}).promise();
invokes.push(request);
}
const dataArr = Promise.all(invokes)
.map(result => JSON.parse(result.Payload).data)