我有三个函数,每个函数都发布到特殊的php页面来获取数据..
并且每个函数都需要一些时间,因为每个PHP脚本都需要一些时间..
function nb1() {
$.post("p1.php", {
action: 1
}, function(data) {
console.log(data);
}, "json")
.fail(function(data) {
console.log("error");
});
}
function nb2() {
$.post("n2.php", {
action: 1
}, function(data) {
console.log(data);
}, "json")
.fail(function(data) {
console.log("error");
});
}
function nb3() {
$.post("c3.php", {
action: 1
}, function(data) {
console.log(data);
}, "json")
.fail(function(data) {
console.log("error");
});
}
$(window).load(function() {
nb1();
nb2();
nb3();
});
如何在同一时间线程处理所有帖子?
答案 0 :(得分:3)
你可以在函数(https://api.jquery.com/jquery.when/)时使用jQuery来等待所有三个promises解析。
您只需要确保在nb1,nb2,nb3函数中也返回promise。
function nb1() {
return $.post("p1.php", {
action: 1
}, function(data) {
console.log(data);
}, "json")
.fail(function(data) {
console.log("error");
});
}
function nb2() {
return $.post("n2.php", {
action: 1
}, function(data) {
console.log(data);
}, "json")
.fail(function(data) {
console.log("error");
});
}
function nb3() {
return $.post("c3.php", {
action: 1
}, function(data) {
console.log(data);
}, "json")
.fail(function(data) {
console.log("error");
});
}
$(window).load(function() {
$.when(nb1(), nb2(), nb3()).then(function(){
///
});
});
你真的需要等待window.load吗?否则我会使用document.ready beacuse它会更快执行。
答案 1 :(得分:1)
您可以使用jQuery.when一次调用所有ajax请求。 $(function () {
$('.like').click(function () { likeFunction(this); });
$('.dislike').click(function () { dislikeFunction(this);});
});
function likeFunction(caller) {
var postId = caller.parentElement.getAttribute('postid');
$.ajax({
type: "POST",
url: "rate.php",
data: 'Action=LIKE&PostID=' + postId,
success: function () {}
});
}
function dislikeFunction(caller) {
var postId = caller.parentElement.getAttribute('postid');
$.ajax({
type: "POST",
url: "rate.php",
data: 'Action=DISLIKE&PostID=' + postId,
success: function () {}
});
}
或<div class="post" postid="10">
<input type="button" class='like' value="LikeButton" /> </input>
<input type="button" class='dislike' value="DislikeButton"> </input>
</div>
事件可以集体处理。
例如
success
此处,failure
函数的参数jQuery.when(
jQuery.post("p1.php", {
action: 1
}),
jQuery.post("n2.php", {
action: 1
}),
jQuery.post("c3.php", {
action: 1
})
).done(function(a1, a2, a3){
// handle success
var p1_responseTxt = a1;
var n2_responseTxt = a2;
var c3_responseTxt = a3;
}).fail(function (jqXHR, textStatus, errorThrown) {
// handle error
});
分别对应done
的成功数据。