ajax求完成,等到ajax请求完成

请参阅下面的后续行动

你可以使ajax请求同步,但这通常是一个坏主意(并且jQuery不会再支持它了。)

相反,让getValue接受回调:

function getValue(key, callback) {

switch(_options.myType){

case "cookie":

setTimeout(function() {

callback(readFromCookie(key));

}, 0);

break;

case "localStorage":

setTimeout(function() {

callback(readFromLocalStorage(key));

}, 0);

break;

case "db":

//return value from the server

// how do I wait for the result?

$.ajax({

type: "GET",

url: "123",

data: { .... },

success: function(data){

callback(data);

}

});

break;

}

}

请注意,我正在setTimeout和readFromCookie回调使用readFromLocalStorage。为什么?因为如果getValue 可能异步返回其值,那么总是这样做。使用超时0要求浏览器尽快将控制权返回给浏览器(尽管它通常被限制在不低于5-10毫秒)。

重新评论以下内容:

你读过我写的东西吗?我说我出于某种原因不能这样做。

我错过了这一点,但在充分尊重的情况下,你可以。它可能需要对代码进行一些重构,但是可以执行它,并且应该。这就是现代Web应用程序的工作方式。如果您的结构不支持它,则需要修复结构。您可以在请求中使用async: false作为临时解决方法,直到您可以正确执行。 (嘿,我们都去过那里,不得不做那样的事情。)请注意,它计划在很长时间内退役(只需jQuery支持它,你仍然可以直接使用XHR来做同步请求)。

更新您的更新问题,以下是更新该代码的方法:

MyClass123.prototype.myMethod = function(value) {

this.getState("key1", function(var1) {

// ^--- Note the var becomes an arg

if var1 == "123"{ ... }

else { .... }

});

};

请注意它实际变化的程度。用于跟随调用getState的逻辑将转入您传入其中的回调。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值