gpt4 book ai didi

javascript - 如果 `eval` 里面有多个 Promise,我如何知道它执行是否完成

转载 作者:行者123 更新时间:2023-12-01 03:01:01 61 4
gpt4 key购买 nike

我正在使用 eval 在 Nodejs 应用程序中将字符串作为 JavaScript 代码执行。问题是,如果字符串包含多个 Promise,我不知道 eval 执行是否完成。

const userFind = 'function usersFind(db, userAge, userNameLast) {\
const useDb = db.db("test");\
const query = {\
"user.age": { $gt: userAge },\
"user.name.last": userNameLast\
};\
const returnData = new Promise(resolve => {\
const arrayData = useDb.collection("users").find(query).limit(1).toArray();\
resolve(arrayData);\
});\
return returnData;\
}\
let results = usersFind(db, 5, "Lee", 1);\
results.then(r => {\
r.forEach(doc => {\
console.log(JSON.stringify(doc));\
});\
});\
results = usersFind(db, 5, "Lee", 1);\
results.then(r => {\
r.forEach(doc => {\
console.log(JSON.stringify(doc));\
});\
});\
';

上面的脚本定义了一个包含两个 Promise 的字符串。如果我运行如下代码:

eval(userFind)

eval 函数返回而不等待 Promise。我如何知道这两个 Promise 何时完成?

最佳答案

.then() 链接到 eval() 调用。您也可以使用Function构造函数

let fn = `() => 
new Promise(resolve =>
setTimeout(resolve, Math.floor(Math.random() * 1200), "resolved"))`;

let promiseString = new Function(`return ${fn}`)();

promiseString()
.then(res => console.log(res))
.catch(err => console.error(err));

关于javascript - 如果 `eval` 里面有多个 Promise,我如何知道它执行是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46418246/

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