【发布时间】:2021-09-06 19:29:38
【问题描述】:
我有一个示例代码和问题
'use strict';
const AWS = require('aws-sdk');
const promiseFunction = (item) => {
const database = new AWS.DynamoDB();
const params = {
TableName: 'some-table',
Item: item
}
try {
//database.putItem(params).promise(); //3
//Updated as per the comments..
return database.putItem(params).promise(); //3
} catch (err) {
console.log(`Error`);
}
}
const test = async () => {
const arr = [];
try {
for (let data=1;data<=1000;data++) {
const obj = { data: {N: data.toString()}}
arr.push(promiseFunction(obj)); //1
}
const result = await Promise.all(arr); //2
} catch (e) {
console.log(`Error`);
}
}
test();
一些后续问题:
- 在第 2 行,一旦所有基于 Promise 的函数在 //1 行执行,结果将包含解析/拒绝结果。对吗?
- 如何,第 1 行的 promiseFunction 正在执行并在 dynamodb 中插入项目,因为我只是将其推入数组而不是调用 dynamo putItem API。从技术上讲,所有“putItem”都应该在第 2 行开始并行执行。请在这里帮忙?
- 上述代码在 Promise.all 和并行执行插入操作方面是否有效。请指教。
【问题讨论】:
-
promiseFunction(obj)确实调用函数,无论你是否将该调用的 result 推送到某处,将其分配给变量或忽略它没关系,你调用函数。