gpt4 book ai didi

javascript - 使用 Google Translate API 进行异步翻译。我究竟做错了什么?

转载 作者:行者123 更新时间:2023-11-30 14:39:47 25 4
gpt4 key购买 nike

总是和异步代码纠缠不清,不知道自己的错误在哪里。

此代码从数据库中读取产品名称并将它们放入 untranslated 数组中。之后,遍历数组,翻译每个项目,并插入新的 translated 数组。

SQL 部分工作正常,但不幸的是,translated 数组是空的。我正在使用 mssqltranslate npm 包。

我怎样才能让它工作?

var untranslated = [];
var translated = [];

var query = `select name from products`

new sql.ConnectionPool(db).connect().then(pool => {
return pool.request().query(query)
}).then(result => {

for (var i = 0; i < result.recordset.length; i++) {
var item = result.recordset[i];

untranslated.push(item.name)
}

// I'm messing it up here somewhere.
untranslated.map(item => {
translate(item, { from: 'mk', to: 'en' }).then(result => {
translated.push(result);
})
})

console.log(translated); // Logs [];

}).catch(err => {
console.log(err);
sql.close();
});

最佳答案

这应该让你继续:

Promise.all(untranslated.map(item => translate(item, { from: 'mk', to: 'en' })))
.then(translated => console.log(translated));

在您的原始代码中,您调用了 translate,它返回了一个 Promise。 Promise 最终实现或拒绝。但是,您创建了很多 promise ,然后继续立即打印 translated。此时,Promises 尚未实现。

这是Promise.all的地方进来。不是为单个 promise 调用 then,而是将它们全部传递给 Promise.all,如果所有 promise 都已解决并包含所有 Promise 的数组,则它会解决结果。

关于javascript - 使用 Google Translate API 进行异步翻译。我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49845071/

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