私はコールバックの配列を持っているので、それぞれがジョブの完了時に実行される別のコールバックを受け取ります。例:
var queue = [
function (done) {
console.log('Executing first job');
setTimeout(done, 1000); // actually an AJAX call here
// I can't call abort() for the request
},
function (done) {
console.log('Executing second job');
setTimeout(done, 1000);
// also AJAX call here
// it is made from a third-party library that I can't change
// this means that I can't call abort() on it
},
function (done) {
console.log('Executing third job');
setTimeout(done, 1000);
},
function (done) {
console.log('Executing fourth job');
setTimeout(done, 1000);
} // and so forth
];
var proceed = true;
(function dequeue() {
var fn = queue.shift();
proceed && fn instanceof Function && fn(dequeue);
})();
すべてを高速化するために、たとえば 4 つのコールバックを一度に起動した方がよいことを除いて、私には問題ありませんが、他のproceed
場所からフラグを変更することでそれ以上の実行を停止することもできます。それ、どうやったら出来るの?
このプロジェクトでは最新バージョンの jQuery を使用しているので、このタスクの達成に役立つものがライブラリにあれば、それを使用します。すべてがブラウザで行われます。