【发布时间】:2019-09-17 14:25:30
【问题描述】:
我有多个函数,其中包含getJSON。我可以在加载第一个函数后调用/加载第二个函数吗?
现在首先调用第二个函数,然后加载第一个函数。无论如何我要完成加载第一个然后调用第二个。
我的 JavaScript
const functionOne = () => {
$.getJSON(api, api_result => {
$.getJSON(api2, api2_result => {
build Highcharts
});
});
}
const functionTwo = () => {
$.getJSON(api3, ap3_result => {
build Highcharts
});
$.getJSON(api3, api3_result => {
...doSomething
});
}
functionOne();
functionTwo();
现在 functionTwo() 正在首先加载(绘制高图),然后 functionOne() 正在加载,因为 getJSON 是异步的。无论如何要先在functionOne 中绘制我的highcharts,然后再转到functionTwo?
【问题讨论】:
-
$.getJSON(api3, ap3_result => { buildHighcharts; $.getJSON(api3, api3_result => { ...doSomething }); });或将第二个 get 放在 buildHighcharts 的末尾 -
虽然
promises是正确答案,但更简单、可能更容易理解的选项是传入回调:functionOne(functionTwo);然后function functionOne(whenDone) { $.getJSON(api, function() { buildhighcharts(); whenDone(); }} -
在调用
functionTwo之前,当前存在的答案都不等待api2,所以要小心...
标签: javascript jquery json function asynchronous