异步函数按照外观顺序触发,但按照完成时的顺序返回。对于那些简单的text
和removeClass
方法,返回速度比您使用Server
对象时要缓慢得多,但我认为这是可能的。如果你需要在postService
之前发生前两行,你可以试试jQuery的deferred.promise
。 Here's a fiddle展示的潜力,一些代码来检查:
function firstThing(){
var dfd = new jQuery.Deferred();
$('#import').text("Importing...");
$('#import img').removeClass("hidden");
dfd.resolve();
}
$.when(firstThing()).then(
function() {
Server.postService("tests", row_datas, function(data) {
// some stuff here
});
}
)
作为一个侧面说明,你的代码的逻辑是有问题的,通过设置的#import
的text
,无论img
有hidden
类不会在那里现在,但这可能就在这一点上。
更新
关注你的回应我的评论询问你使用Ajax,我建议你阅读有关async
option,看看你是如何做的可能会或可能不会被阻塞事件是什么。
我也建议阅读jQuery ajax回调,特别是error
,success
和complete
(现在使用jQuery 1.8+,fail
,done
和always
)。
有没有机会在'Server'“stuff”中使用ajax? – crowjonah
你是怎么调用这段代码的? – epascarello
在像http://jsfiddle.net这样的地方提供演示确实有助于深入研究这个问题。我猜猜Server.postService()是服务器端方法吗?浏览器实际上在源代码中获得了什么? –