gpt4 book ai didi

node.js - Promise 问题 - .then() 没有被调用?

转载 作者:行者123 更新时间:2023-12-03 22:23:58 25 4
gpt4 key购买 nike

我有两个需要按特定顺序运行的 Sequelize 查询,第一个创建模型,第二个从数组创建多个模型。它的工作原理是首先插入 obj1 然后插入事务数组,但是最终的“then()”似乎没有被调用......我做错了什么?

var fn = function addTransaction(transaction) {
return new Promise(function() {
return Transaction.create(transaction, { fields: [ 'Id', 'Name' ]});
}
};

var transactions = [...]; //array of transaction objects

Model1.create(obj1, { fields: [ 'Id', 'Name' ,'Description' ]}).then(function() {

var actions = transactions.map(fn);
var results = Promise.all(actions).then(function(data) {
return Promise.all(data.map(fn));
});
results.then(function() {
console.log("Done?"); //not getting called
});

}).catch(function(err) {
console.log(err);
});

最佳答案

addTransaction() 永远不会解决它创建的 promise 。您创建一个外部 promise 并返回它,但永远不会解决它。您至少必须为该回调声明一个 resolve 参数,然后在某处调用 resolve()

但是,如果 Transaction.create() 已经返回了一个 promise,那么您可以将 addTransaction() 更改为:

var fn = function addTransaction(transaction) {
return Transaction.create(transaction, { fields: [ 'Id', 'Name' ]});
};

还不清楚为什么要使用相同的 fn 来处理每个事务产生的 transactions 数组和 data 数组。从逻辑的角度来看,这似乎有点奇怪。您确定这是编写代码的正确方法吗?为了让我们帮助您设计那部分代码,您必须通过在第一个交易数组上调用 fn 并再次调用结果来解释更多关于您要完成的任务。

关于node.js - Promise 问题 - .then() 没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35530613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com