gpt4 book ai didi

javascript - 从同一类的异步方法调用类内的异步方法时的 Promise(待定)

转载 作者:行者123 更新时间:2023-12-03 00:37:17 26 4
gpt4 key购买 nike

我正在使用 Sequilizer 并陷入困境,因为该方法永远处于挂起状态。

以下是我正在尝试做的事情的简化版本。基本上,API 通过调用 BatchProcessor 使用以下方法,该方法应该处理提供的 json。

我基本上希望 BatchProcessor 从 FinalTheme 方法获取 themeprice 和 themegate,但 promise 永远悬而未决。

export default {


async FinalTheme(id) {

return db.Themes.findOne({
where: {
ID: id
},
attributes: ["ThemeCost","ThemeGate"],

limit: 1
})
.then(data => {

if (data == null) {
return -1;
}

return {
cost: data["ThemeCost"],
gate: data["ThemeGate"]
};
})
.catch(err => {
return false;
});
},


async BatchProcessor(record, index_number) {

const SQL ="SELECT * FROM themes";


return db.sequelize
.query(SQL, {

type: db.sequelize.QueryTypes.SELECT
})
.then(themes => {
// do we have data here?

const totalThemes = themes.length;


let lastAmount = record["Amount"];
for (
let counter = 0;
counter < totalThemes - 1;
counter++
) {


const CustomerFinalTheme = this.FinalTheme(record["CustomerID"]); // FOREVER PENDING


}



})
.catch(err => {
console.log(JSON.stringify(err));
});
},

};

我究竟做错了什么?

最佳答案

this.FinalTheme(... 返回一个 promise ,而不是您必须执行的值:

this.FinalTheme(record["CustomerId"]) // where is the record assigned?
.then(data => {
const CustomerFinalTheme = data;
})

声明函数时也无需使用异步,即以下内容即可:

FinalTheme(id) {
return db.Themes.findOne({
[...]
}

关于javascript - 从同一类的异步方法调用类内的异步方法时的 Promise(待定),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53612844/

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