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

Awa*_*wan 2 javascript jquery delay

我有以下js代码:

clientData.reloadTable( "CreateCSV", "/create/file" );
$("#downloadFrame").attr("src","/download/download");
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

nee*_*ebz 7

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

如果可以更改reloadTable函数,那么>

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

clientData.reloadTable("CreateCSV", "create/file", callback);
Run Code Online (Sandbox Code Playgroud)

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

这是Javascript的真正美.


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

例如,如果需要1秒钟.完成后,你可以>

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


hel*_*ios 5

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

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

function doSecondThing() {
...
}
Run Code Online (Sandbox Code Playgroud)