<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ajax Pipeline Test</title>
<script src="../Scripts/jquery-1.8.0.js"></script>
<script>
$(function () {
var queue = ["S", "S", "F", "S"]; //["S", "S", "E", "S"];
var chain = $.Deferred().resolve();
$.each(queue, function (i, v) {
//使用pipe()串接後取得新的Promise
chain = chain.pipe(function () {
return $.post("SomeJob.ashx", { m: v })
.pipe(
//doneFilter, 形同ajax success事件,但要傳回Promise物件
function (res) {
$("#message").append("<li>" + res + "</li>");
//傳回reject的Deferred物件可中斷pipe()執行
if (res.substr(0, 1) == "F")
return $.Deferred().reject();
//傳回resolve的Deferred物件繼續pipe()
return $.Deferred().resolve();
}
//failFilter, 形同ajax error事件,但要傳回Promise物件
, function (jqXHR, textStatus, errorThrown) {
alert("ERROR-" + errorThrown);
return $.Deferred().reject();
});
});
});
});
</script>
</head>
<body>
<ul id="message"></ul>
</body>
</html>