如何告诉JS等待......?

时间:2009-09-07 03:03:05

标签: javascript

我知道有这样的方法:

setTimeout("functionA();",1250);

这可以延迟我的进程,但问题是,functionA有一些值可以返回。当我使用这种方式时,它不会让我回到functionA返回值:

this.sth = setTimeout("functionA();",1250);

我的意思是,this.sth不是我想要的结果。

4 个答案:

答案 0 :(得分:1)

你应该创建一个函数()来执行此操作:

function functionB() {
    this.sth = functionA();
    // do things with the returned value
}

答案 1 :(得分:0)

你可以这样做:

setTimeout(functionA(functionB()), 1250);

并将functionB定义为:

function functionB(resultFromA) {
}

functionA看起来像:

functionA(callback) {
    // do something useful
    callback(result);
}

答案 2 :(得分:0)

setTimeout是一个异步操作。这意味着functionA在超时后运行,但脚本的其余部分仍在运行。这是一个常见的错误,新的javascript程序员认为脚本在导致这种情况时会暂停。

如果您的目标是使用while循环或使用日期循环使脚本暂停更好。这可能是一个坏主意。暂停的脚本可以为浏览器做一些奇怪的事情,包括在运行时使整个浏览器暂停。这包括所有选项卡。这可能不是你想要的。更好的选择是像Garret所提到的那样做,以便操作以异步方式工作,但仍能完成你想要的工作。

答案 3 :(得分:0)

我已经看到使用具有数千/数百万次迭代的for循环的解决方案。但是请注意,如果使用不当,这可能会使浏览器无响应。