首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript DoEvents等价物?

Javascript DoEvents等价物?
EN

Stack Overflow用户
提问于 2009-07-16 14:36:55
回答 4查看 7.3K关注 0票数 2

下面是我的简短代码片段:

代码语言:javascript
复制
$(document).ready(function() {
$.get("/Handlers/SearchData.ashx",
function(data) {
json = $.evalJSON(data);
});

//do some other stuff

//use json data

alert(json == null);

});

警告说是真的,因为evalJson还没有完成对JSON数据的处理(21kbgzip)。在使用该数据之前,我需要以某种方式等待它完成-这正是我在while循环中对DoEvents所做的事情。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-16 14:41:14

没有等同于DoEvents的东西,但是您可以将依赖于您的JSON数据的代码放入一个函数中,然后从AJAX回调中调用它。您还可以使用$.getJSON方法,这样就不必自己计算JSON。

代码语言:javascript
复制
$(document).ready(function() {
    $.getJSON("/Handlers/SearchData.ashx",
    function(data) {
        json = data;
        stuffToDoAfterIHaveData();
    });

    //do some other stuff
});

//use json data
function stuffToDoAfterIHaveData() {
    alert(json == null);
}

或者,jQuery提供了一种使AJAX请求同步的方法(即,它们会暂停代码执行,直到响应返回)。您可以使用$.ajaxSetup({ async: false });,也可以直接调用$.ajax方法并在options对象中传递async:false

票数 3
EN

Stack Overflow用户

发布于 2009-07-16 14:40:40

与其自己执行evalJSON,为什么不让jQuery自己找出什么时候执行:

代码语言:javascript
复制
$.ajax({
  url:"/Handlers/SearchData.ashx",
  type: "get",
  dataType: "json",
  success:function(d) {
    //d now contains a JSON object, not a string.
    alert(d==null);
  }
});
票数 3
EN

Stack Overflow用户

发布于 2009-11-16 19:54:22

在javascript中唯一类似于doEvents的是setTimeout()。第一个参数应该是一个字符串,其中包含您希望在“系统事件”完成后执行的代码,第二个参数是要等待的milisecs数……这很复杂,但这是我知道的唯一解决方案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1138066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档