【发布时间】:2017-11-30 06:45:06
【问题描述】:
由于 Javascript 是单线程的,我真的不知道这会是什么问题,但它是这样的:我有一个被调用的函数,其中还有另一个函数。一旦 Javascript 开始执行内部函数,它就会与外部函数同时恢复,而我实际上希望它等到内部/嵌套函数完成然后继续。我希望这是可以理解的,但我将在 cmets 中进一步详细说明:
function foo() {
"use strict";
//get some json file
$.getJSON("bar.json", function(data) {
//calculate something with data
//put the result in this div (innerHTML)
});
//display: block the div with results
}
问题是即使计算尚未完成,它也会立即显示 div。然后它会在稍后抛出结果,这根本不是我想要的。我必须做出承诺或类似的事情吗?
提前感谢您的帮助。非常感谢。
【问题讨论】:
-
因为
$.getJSON是异步的。请参阅this question 以了解如何使该调用成为同步调用。 -
@SpencerWieczorek 现在可以正常工作,但浏览器告诉我 “不推荐使用主线程上的同步 XMLHttpRequest [...]” - 使用 @987654328 是不好的做法@?
标签: javascript jquery json promise nested