【发布时间】:2021-10-07 14:51:12
【问题描述】:
我有以下函数可以正常工作,除了我需要等到它完成执行下一条语句:
zohoAuth.zoho_oAuth = function () {
// return new Promise((resolve, reject) => {
zohoAuth.state = utils.uuid();
const url = zohoAuth.authorizationURL();
zohoAuth.popUp(url);
getAuthCodeFromCatalyst();
//setTimeout(getAuthCodeFromCatalyst,1000);
function getAuthCodeFromCatalyst() {
return new Promise(function (resolve, reject) {
(async function waitForFoo() {
const gotAuthState = await zohoAuth.getUserDataFromStorageState(zohoAuth.state)
await gotAuthState;
if (gotAuthState) return resolve();
setTimeout(waitForFoo, 1000);
})();
});
}
console.log("bottom of zoho auth")
return true;
// });
}
我用这个来调用函数:
zohoAuth.zoho_oAuth();
console.log("done waiting");
我如何等待这个完成?
【问题讨论】:
-
等待它?使用.then?另外,为什么你有一个常规函数,它返回一个包装异步 IIFE 的新 Promise,而不是仅仅编写一个异步函数?
-
另外,等待
getUserDataFromStorageState然后等待结果看起来很奇怪。你确定你正确使用了这个工具吗? -
上述功能适用于我想要它做的事情。我正在等待用户按 OK,然后从数据库中读取结果。所以我每秒都在调用“getUserDataFromStorageState”。该功能的作用。我只需要等到我从数据库中得到答案