我知道有几个线程对此进行讨论,但我认为在 SAPUI5 上下文中没有线程回答有关 SAPUI5 中的延迟/同步调用的一般主题。
在我的控制器中我得到:
test : function() {
var dfd = $.Deferred();
var sServiceUrl = '/sap/opu/odata/sap/xyz/MySet?$format=json';
var post = $.ajax({
url: sServiceUrl,
type: "GET"
});
post.done(function(data){
console.log(data);
dfd.resolve();
});
post.fail(function(){
console.log("Error loading: " + sServiceUrl);
dfd.reject();
});
return dfd.promise();
},
在我看来,我正在调用该方法并且我想等待结果,如何正确管理它?
var test = oController.test();
console.log(test);
$.when(test).done().then(console.log("finished"));
这种方法也不会等待:
$.when(oController.test()).then(console.log("finished"));
正如预期的那样,测试未定义,“完成”被记录,并且当方法中的 .done 准备就绪时,它被记录。但我想等待它(最好的情况是从ajax返回数据)..
在我看来,如何等待 post.done() 继续?
()
运算符调用该函数。您自己调用该函数,该函数不是由then
方法。发生的事情是你打电话给log
函数及其返回值设置为处理程序。由于您想将参数传递给console.log
方法,您可以使用匿名函数:
dfd.resolve(data);
// ...
$.when(oController.test()).then(function(data) {
console.log('finished', data);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)