我运行一个小Magento商店,并希望扩展我的Checkout与一些功能. Magento使用KnockoutJS,我想扩展KnockoutJS组件与一个简单的函数,返回或真或假取决于 AJAX 调用的响应:
isEnabled: function () {
var result = false;
$.getJSON('/mycontroller/checkEnabled', function(response) {
// response from the controller is simply "true" or "false", in this case "true"
result = response
})
return result
}
不幸的是,即使getJSON
的响应是“true”,它也总是返回false。我认为这是因为 AJAX 调用是异步的,并且return result
被立即执行,而不是等待AJAX完成。
我已经在谷歌上搜索了如何解决这个问题,并在过去的几个小时里尝试了无数不同的解决方案,async / await、promises、callback(来自here),但我就是不明白如何在 AJAX 调用完成后将响应值返回到我的isEnabled
函数中。
这真的让我头疼,因为到目前为止我只有同步编程语言的经验。
如何使isEnabled
只返回getJSON
AJAX 调用的布尔值?
1条答案
按热度按时间mqkwyuun1#
我会把两者分开。
1.具有表示当前状态的isEnabled属性
1.以及从服务器检索必要数据以确定Enabled状态并在返回promise时设置isEnabled可观察值的函数。
就像这样。
第一个