我似乎无法弄清楚为什么这对我不起作用。 我有一个父函数,在子加载过程上执行了AWAIT ... 加载过程反过来调用另一个名为LOADDATA的AWAIT ... 基本上是这样的:
module.exports = async function () {
try {
await load();
} catch (ex) {
console.log(ex);
logger.error(ex);
}
};
async function load() {
return await new Promise((resolve, reject) => {
TableImport.findAll().then((tables) => {
for (let table of tables) {
await loadData(table.fileName, table.tableName);
}
resolve();
}).catch(function (err) {
reject(err);
})
})
};
async function loadData(location, tableName) {
return await new Promise(function (resolve, reject) {
var currentFile = path.resolve(__dirname + '/../fdb/' + location);
sequelize.query("LOAD DATA LOCAL INFILE '" + currentFile.replace('/', '//').replace(/\\/g, '\\\\') + "' INTO TABLE " + tableName + " FIELDS TERMINATED BY '|'").then(function () {
resolve(tableName);
}).catch(function (ex) {
reject();
});
});
};
在LOAD中等待失败,报错信息如下:
await loadData(table.fileName, table.tableName); SyntaxError: Unexpected identifier
显然不太理解异步的作用域!
return await ...
。只需返回 Promise 即可。此外,应避免将新的 Promise 包装在现有 Promise 中,以避免 Promise 反模式。 - jfriend00