0
APIサービスをラップして、特別な機能を作成するnext
を作成しました。これはデータの次のページで呼び出します。私はちょうどreq = null
設定することができ想定して、それが再び動作して停止する、しかし、コールバック関数が実行され続け、私は早くこの自動ページ付けを停止する場合未定義に設定しても機能が実行され続けます
let req = getSomeData({ param: true }, function(err, res) {
// Do something
if (res.next) {
res.next();
} else {
// All data processed
}
})
:それは私のようなものを行うことができます。
ミニマルな例は以下の通りです:
var parent = function() {
var runner = function(func) {
var next = function() {
return runner(func);
}
func(next)
}
var handler = function(next) {
console.log('handler called')
setTimeout(next, 2000);
}
runner(handler);
}
var child = new parent();
setTimeout(function() {
console.log('killing child');
child = undefined;
console.log('child is ' + typeof child);
}, 5000)
5秒child = undefined
後、ハンドラ関数は、2秒ごとに呼ばれ続けていますが。
デモ:http://jsbin.com/tuyebacavi/1/edit?js,console
あなたは 'てclearTimeoutを呼び出す必要があります()'。 'setTimeout()'を開始したオブジェクトを単に参照解除すると、 – haim770
はうまくいきません。あなたのコードに基づいて、2秒ごとに次の繰り返しのために無条件にsetTimeoutを行います。 –
'setTimeout'を使ったこの例はデモです。タイムアウトを追加するだけで一時停止され、ログに迷惑をかけません。実際のバージョンはいくつかのデータ処理と外部リクエストを行い、数秒かかると「next」を呼び出します。 –