【发布时间】:2021-02-03 07:55:01
【问题描述】:
此 Lambda 函数执行 http 请求,然后将数据写入 DynamoDB。我想知道为什么该函数是异步设置的。如果它不是异步的,那不是一样吗?据我所知, await 告诉代码在 httprequest() 完成后暂停并继续。不是和同步运行代码一样吗?
exports.handler = async (event) => {
try {
const data = await httprequest();
for (var i = 0; i < data.d.results.length; i++){
var iden = Date.now();
var identifier = iden.toString();
datestring.substring(4,6) + "-" + datestring.substring(6,8);
//add to dynamodb
var params = {
Item: {
id: identifier,
date: data.d.results[i].DAY_T,
},
TableName: 'DB'
};
await docClient.put(params).promise();
}
console.log('Document inserted.');
return JSON.stringify(data);
} catch(err) {
console.log(err);
return err;
}
};
【问题讨论】:
-
另外,
await docClient。 --- 要使用 await 它所在的功能需要是异步的。 -
不准确,不。
await让 JavaScript 引擎有机会运行其他一些 JS,而不是像 Promise 那样阻塞等待被调用函数的响应。 -
这和同步运行代码不一样不,还是异步的。
标签: javascript node.js asynchronous aws-lambda