【发布时间】:2016-11-08 16:38:18
【问题描述】:
我正在查看Benjamin Gruenbaum's answer,他在HTML 正文中打印result。尽管他确实广泛谈论了他和其他有关其工作原理的答案,但他们并没有直接回答“如何从异步调用返回响应”这个问题?
据我了解,他(和我)希望能够返回结果并将其分配给例如函数foo 之外的变量或console.log()。
代码如下:
foo(function (result) {
document.body.innerHTML = result;
});
function foo(callback) {
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState === 4) { // request is done
if (httpRequest.status === 200) { // successfully
callback(httpRequest.responseText); // we're calling our method
}
}
};
httpRequest.open('GET', "someFile.json");
httpRequest.send();
}
我真正想要的是读取文件“someFile.json”并将相应的字符串存储在变量jsonString 中,而不是将其分配给页面正文,这样我就可以在其他地方使用它。
【问题讨论】:
-
你可以。只是在
callback执行并分配它之前不要“用它做点什么”。 -
“他们没有直接回答我如何从异步调用返回响应的问题?” 那么,直接的答案是:你可以't,但这并不是真的有用。相反,我们将向您展示如何构建您的代码。
-
@Igor 我的错,我尝试了一些东西后复制了错误的部分。我只想将
result分配给一个变量,但是当我这样做时,它最终是未定义的。 -
@FelixKling 那么我有没有办法将
result分配给现有变量而不是更新body而不必求助于服务器端编程? -
你可以在回调中做任何你想做的事情,例如
someExistingVariable = result;。但通常会有更好的解决方案,具体取决于您的具体用例。
标签: javascript file asynchronous