相关疑难解决方法(0)

jQuery:等待函数完成继续处理?

大家好.我看起来似乎是一个微不足道的问题.我有以下JavaScript:

$(function() {
    var r = GetResults();

    for(var i = 0; i < r.length; i++) {
        // Do stuff with r
    }
});

function GetResults() {
   $.getJSON("/controller/method/", null, function(data) {
       return data;
   });
}
Run Code Online (Sandbox Code Playgroud)

由于我正在异步调用方法,脚本继续执行,当遇到for循环时,r显然不会有值.我的问题是:当我有一个正在进行异步操作的方法,并且我依赖于它在主块中返回的数据时,如何在数据返回之前暂停执行?就像是:

var r = GetResults(param, function() {

});
Run Code Online (Sandbox Code Playgroud)

其中函数是回调函数.我无法将for循环处理移动到JSON请求的回调函数中,因为我在整个页面中多次重用GetResults的功能,除非我想复制代码.有任何想法吗?

javascript jquery

17
推荐指数
3
解决办法
5万
查看次数

暂停JavaScript执行而不锁定浏览器

您是否能够在不锁定浏览器的情况下暂停JavaScript执行?通常停止执行的方式是执行无限while()循环,但在FireFox的情况下,它会锁定浏览器,直到循环结束.

你对此有何看法?


我试图覆盖window.confirm()使用HTML实现我自己的对话框.我这样做,所以我不必更改现有的代码(这是一个非常大的代码库).

我需要能够暂停执行以允许用户输入; 反过来返回一个像标准确认函数那样的布尔值:

if (confirm("..."))
{
    // user pressed "OK"
}
else
{
    // user pressed "Cancel"
}
Run Code Online (Sandbox Code Playgroud)



更新

据我所知; 这不能使用setTimeout()setInterval()因为这些函数执行异步给出的代码.

javascript execution

6
推荐指数
3
解决办法
1万
查看次数

标签 统计

javascript ×2

execution ×1

jquery ×1