如何在两个js函数之间设置延迟?

时间:2011-04-26 07:21:07

标签: javascript jquery delay

我有以下js代码:

clientData.reloadTable( "CreateCSV", "/create/file" );
$("#downloadFrame").attr("src","/download/download");

在上面的代码中。第一个语句是在磁盘上创建一个csv文件。第二个语句正在下载它(使用iframe下载文件因为使用AJAX请求时出错)。它是下载文件,但有以前的内容。这意味着它会在完成更新该文件之前提示我下载文件。

如何强制我的2 nd 语句在第一个语句完成其工作之前不执行?

由于

3 个答案:

答案 0 :(得分:7)

在Javascript中执行此类操作的最佳方法是使用回调函数。

如果可以更改reloadTable函数,使其>>

var callback = function () { $("#downloadFrame").attr("src", "/download/download") }

clientData.reloadTable("CreateCSV", "create/file", callback);

然后在reloadTable函数内部,一切都完成后调用回调函数。

这是Javascript的真正之美。


否则,如果你知道reloadTable需要多长时间,你也可以使用setTimeout()。

e.g。如果需要1秒钟。要完成,您可以>

clientData.reloadTable( "CreateCSV", "create/file" );
var func = function () { $("#downloadFrame").attr("src","/download/download");}
setTimeout(func, 1000);

答案 1 :(得分:5)

听起来不太健壮。但无论如何:

function start() {
  doFirstThing();
  setTimeout('doSecondThing();', 1000); // execute the secondthing in 1000 ms
}

function doSecondThing() {
...
}

答案 2 :(得分:2)

clientData.reloadTable( "CreateCSV", "/create/file" );

如果是ajax电话。从它的回调中调用你的下载功能。