是的,我想完全同步。我知道它会完全停止我唯一的线程,但我真的需要它,因为我使用一些我不想更改的 SDK,并且在这个 SDK 中,您需要传递一个将被调用且会更改的函数那里有一些价值,比如:
function onNonce(stuff) {
const url = 'fancy url to change stuff';
// await also doesn't work
// const response = await fetch(url);
// const resp_json = await response.json();
// return resp_json.token;
// await also doesn't work
const req = new XMLHttpRequest();
req.open("GET", url, false); // <-- completely sync and deprecated
req.send();
if(req.readyState === 4 && req.status === 200) {
return req.response.token;
}
}
这就是我的函数的调用方式:
function SDK(result) {
//
// SOME FANCY CODE
//
var the_value_to_change;
the_value_to_change = onNonce('some stuff');
console.log("async");
//
// SOME FANCY CODE that uses this the_value_to_change
//
}
如果我使用 wait 那么我的 func 返回Promise而不是令牌,如果我使用open with 真(异步),然后我得到不明确的。该变体与false(完全同步)已弃用,所以我想使用 fetch API 做同样的事情。
// 编辑 //
那么,我该如何执行onNonce功能 (fetch and 响应.json())完全同步?
你不能。
fetch
没有同步运行的选项(出于同样的原因,同步运行 XHR 的选项首先被弃用)。
了解如何使用await正确地代替 https://javascript.info/async-await.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)