javascript - 使 fetch 调用真正同步
问题描述
是的,我想完全同步。我知道它会完全停止我唯一的线程,但我真的需要它,因为我使用了一些我不想更改的 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
//
}
如果我使用 await 那么我的 func 返回Promise而不是令牌,如果我使用open with true (async),那么我得到undefined。不推荐使用带有false (完全同步)的变体,所以我想用 fetch API 做同样的事情。
// 编辑 //
那么,我怎样才能完全同步地执行onNonce函数(fetch和response.json())?
解决方案
推荐阅读
- elasticsearch - 带有规范化器的 ElasticSearch 关键字文件不适用于通配符查询
- python-3.x - 我应该如何在 Python 中使用 id() 函数?
- python-3.x - 使用 boto3 在 dynamodb 中返回所有具有最大排序键的哈希键项
- r - 我想在 for 循环中的 ggplot2 中绘制多个 geom_line,所以我能够绘制线条但面临着色问题。任何人都可以建议如何做
- git - 如何找出一个合并提交中包含哪些提交?
- java - 如何通过 Eclipse 将自动化测试用例关联到 Azure
- mysql - 如何使用 node.js 将 excel 文件导入 MySQL?
- ruby-on-rails - 按轨道 4 上的条件排序
- node.js - 如何在 MongoDB 上高效查询复杂的层次结构
- php - php imagemagick 或任何其他方式来查找拼图的 xy 坐标