node.js - Await Promise.all async 在我的代码中不起作用
问题描述
我有一个具有以下结构的 lambda 函数,它曾经在旧版本的 nodejs 中工作,但它不适用于新版本。我知道我的代码结构非常混乱和错误,但我无法理解它。我正在尝试使用Promise.all
,但显然我做错了什么,因为它根本没有被执行。
顺便说一句,我没有收到任何错误。promise.all 方法永远不会被执行。
let AWS = require('aws-sdk');
exports.handler = async(event, context, callback) => {
let result = {};
try {
result = await getOrder(sql, 0);
result.map(
(dataField) => {
});
}
catch (error) {
console.log(error);
callback(error);
}
var today_result = [];
const groupKey = i => i.user_id + '_' + i.when;
const counts = _.countBy(followingsIDs, groupKey);
const isMulti = i => counts[groupKey(i)] > 1;
const multiPropkey = i => ({ multiplekey: isMulti(i) ? groupKey(i) : groupKey(i) });
const multiProp = i => ({ multiple: isMulti(i) ? counts[groupKey(i)] : 1 });
const updated = _.map(followingsIDs, i => _.extend(i, multiProp(i), multiPropkey(i)));
const uniqResult = _.uniq(updated, function(d) { return d.multiplekey });
// Doesn’t execute from here —>
await Promise.all(uniqResult.map(async(dataField) => {
console.log("test_");
dosomething()
if (true) {
let sql = `INSERT INTO ….`
result = await getOrder(sql, 0);
try {
const data = await sns.publish(params).promise();
}
catch (e) {
console.log(e.stack);
response.result = 'Error';
}
}
}));
// Till here <----
callback(null, uniqResult);
};
let getOrder = async(sql, params) => {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if (err) throw err;
connection.query(sql, params, (err, results) => {
if (err) {
reject(err);
}
// console.log("-----Query Done!");
connection.release();
// console.log("-----Data: ", results);
resolve(results);
});
});
});
};
解决方案
你还在等什么?uniqResult
只是被声明为一个空数组。之后立即将其传递给 Promise.all。你需要用 Promise 填充它,然后将它传递给 Promise.all。
推荐阅读
- ios - 如何在不同位置设置不同的图像引脚 SWIFT
- java - 我可以将@OneToMany 与 JPA 的关系与内存中的 H2 实体和 SQLServer 实体映射吗?
- android - 使用 android studio 移动编辑文本提示
- python - 如何在 heroku 上部署 Python API?没有名为“app”的模块错误
- matlab - 在不使用 Hist 的情况下在 Matlab 中生成直方图
- ios - 为什么我的 UICollectionView 大纲不起作用?
- vim - 如何在 7.3 之前的 vim 上启用语法高亮?
- php - 从 Vue.js 发送 POST 到 Laravel 的问题
- android - 在 RxAndroidBLE 中,当 autoConnect=true 时,RxBleDevice.establishConnection() 方法会无限阻塞
- c++ - 带有模板的 C++ 模板化函数特化