我使用aws,它获取项目列表,并异步推送表中的项。在这里,promise.all(promiseList)不会在表中添加数据,但是执行promise.all(promiseList)可以确保将第一个元素推入表中。我怎么才能让它等待一切呢?我的密码-
let promiseList = [];
// await Promise.all(
promiseList.push(
event.Records.map(async record => {
console.log(record.dynamodb.Keys.ServiceOrderId.S);
console.log('Inside initiate payment');
const paymentObject = {
paymentId: record.dynamodb.Keys.ServiceOrderId.S,
totalAmount: "1200"
};
console.log(paymentObject);
const dynamoDBParams = {
TableName : TABLE_NAME,
Item : paymentObject
};
return await DynamoDBClient.put(dynamoDBParams).promise();
}
)
);
return await Promise.all(promiseList[0]);发布于 2021-02-23 23:13:23
我能看到几处变化
once.
DynamoDBClient.put(dynamoDBParams).promise() await,这将是效率低下的,我们希望继续执行all at 以下是完整的Lambda的外观:
const AWS = require("aws-sdk");
AWS.config.update({ region: "us-east-1" });
let docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = async function(event) {
const table = 'test'
var promiseArray = [];
event.Records.map(record => {
console.log('record', record);
const promise = docClient.put({
TableName: table,
Item: {
pk: record.pk,
title: record.title,
},
}).promise();
promiseArray.push(promise)
})
return Promise.all(promiseArray);
}https://stackoverflow.com/questions/66341388
复制相似问题