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请求时出错).它是下载文件,但有以前的内容.这意味着它会在完成更新该文件之前提示我下载文件.
如何在第一个语句完成其工作之前强制我的第二个语句不执行?
谢谢
在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)
听起来不太健壮.但无论如何:
function start() {
doFirstThing();
setTimeout('doSecondThing();', 1000); // execute the secondthing in 1000 ms
}
function doSecondThing() {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12529 次 |
| 最近记录: |