【发布时间】:2018-12-16 02:01:59
【问题描述】:
我想使用 Promise 插入数据 3 表,但我遇到了问题。我想在任务表中插入数据,获取结果插入 id,将该 id 插入其他表并获取此插入 id,将该 id 插入其他表。我想使用 Promise.all 函数来做到这一点。这是我的代码。
addClientTable(insertTask)
.then(client_res => {
return client_res.insertId;
})
.then(clientInsId => {
insertTask.task.client_id = clientInsId;
addTaskTable(insertTask)
.then(task_res => {
if (insertTask.task.connection == 0) {
updateTaskConnection(task_res.insertId)
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
})
}
return task_res.insertId;
})
.then(taskInsId => {
addTaskUsersTable(user_ids, taskInsId, clientInsId)
.then(result => {
resolve(result);
})
})
.catch(err => {
reject(err);
})
})
.catch(err => {
reject(err);
});
【问题讨论】:
-
Promise.all假设任务可以完全独立运行。由于您以后的承诺依赖于早期承诺的 id 值,因此.then()链接更适合您的需求。 -
您可以通过链接
then()s 来完成这一切,但是,async/await可能会使一切变得更清晰,更易于遵循.. -
Mark Meyer 我不知道怎么做。如果你知道,请为我写代码示例。谢谢
标签: javascript mysql node.js promise es6-promise