我想使用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);
});
答案 0 :(得分:1)
我看不到需要l
,但为了获得更简洁的代码并避免嵌套Promise.all
,我建议使用.then()
,这是对promises的含糊语法,您的代码应如下所示:
async/await
答案 1 :(得分:0)
从承诺中获得任何回报都是可以的。
基于此,您还可以将代码修改为如下所示。
addClientTable(insertTask)
.then(client_res => {
return client_res.insertId;
})
.then(clientInsId => {
insertTask.task.client_id = clientInsId;
return 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 => {
return addTaskUsersTable(user_ids, taskInsId, clientInsId)
})
.then(result => {
resolve(result);
})
.catch(err => {
reject(err);
});
尽管使用async / await是可行的方法。