我有一个jquery每个函数。我在调用一个函数。只有当前一个元素的这个函数完成时,才应调用每个函数内部的函数。
function x(t){
var a = something;
$.each(a, function(index,value){
y(this);
});
}
function y(t){
$.ajax({
}).done(function(r){
if(r.success){
}
else{
}
});
// This function should be called for the second element
// in the each function only if its completed for the first element.
}
答案 0 :(得分:5)
$.each
是同步函数,所以下一次迭代只在当前一次完成时发生(包括调用和执行y(this)
,除非里面有异步操作)
使用Ajax执行:
使用递归模仿循环。
var currentIndex = 0;
function x(t) {
if (currentIndex >= something.length) {
return;
}
$.ajax({
url: '',
data: something[currentIndex],
success: function () {
currentIndex++;
x(t);
}
});
}
答案 1 :(得分:0)
如上所述,此功能同步运行,因此,当第2项到达时,它已经由第1项完成。
这是一个例子,但其他情况是y函数运行异步,但是你没有指定no?
function x(t){
var a = ["one", "two", "tree"];
$.each(a, function(index,value){
y(this, index);
});
}
function y(t, index){
// This function should be called for the second element
// in the each function only if its completed for the first element.
console.log(index + " "+ t +" => running in y")
}
x("")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>