AJAX JSONP调用时执行时间重叠

我有一个jsonp ajax调用,它被执行并将数据返回给我的main函数。

这是通过调用that.mainfunction(newData);在success函数中完成的that.mainfunction(newData);

这意味着第二次调用main函数,我认为我正在运行时间/执行问题。

在第一次迭代中运行时, newData为空,并返回空主函数。 我必须使用这个框架的主要function。 所以另一个控件试图调用空的getter。 因此控制是空的。

然后第二次迭代开始。 数据在这里,脚本调用that.mainfunction(newData); 并将数据返回到main函数。

第二次迭代运行的时间太晚,无法将数据传输到控件。 因为它已经尝试获取数据。

如何避免这个时间/执行问题? 在使用jquery时是否可以发布/订阅一些事件总线?

这是一些代码:

 sap.designstudio.sdk.Component.subclass("component", function() { var that = this; this.processDataFromServer = function(){ function getData(callback){ $.ajax({ url: path, dataType: 'jsonp', contentType: "application/json", success: function(data){ callback(data); } }); }; getData(processData); function processData(data){ this.processDataFromServer(data); }; } this.mainFunction = function(newValue){ if(typeOf(newValue) == "undefined"{ this.processDataFromServer(); } else { return newValue; } } 

}

我看到你正在使用$.ajax ,所以我认为应对这个挑战最干净的方法是使用jQuery promise / deferred – 这将确保在适当的时间执行。 我自己利用承诺来确保干净的ajax请求/响应。

.promise()方法返回一个动态生成的Promise,一旦绑定到已排队或未排队的集合的某个类型的所有操作都已结束,它就会被解析。

jQuery Doc

有关承诺/延期模式的全面演练: http : //www.danieldemmel.me/blog/2013/03/22/an-introduction-to-jquery-deferred-slash-promise/