私は、ユーザーが数回実行するかもしれないが、コールバックが少し手を出すのに十分な非同期アクションを伴う一連の関数を持つWebアプリケーションを構築しています。Jquery約束:再利用可能な代替品はありますか?
$.Deffered
と$.when
の現実的な代替手段は何度も「使用」できますか?
- 私は(直接)
感謝をコールバックを使用したくない
:ここ
私は、ユーザーが数回実行するかもしれないが、コールバックが少し手を出すのに十分な非同期アクションを伴う一連の関数を持つWebアプリケーションを構築しています。Jquery約束:再利用可能な代替品はありますか?
$.Deffered
と$.when
の現実的な代替手段は何度も「使用」できますか?
感謝をコールバックを使用したくない
:ここ
は3つの、このようなライブラリです。彼らは約束を履行するだけです。
投稿者:RSVP.js「約束が解決または拒否されたら、それを解決したり拒否することはできません。 ? – Haroldo
@Haroldo - もちろんです。それはそれが[仕様で定義されている]方法です(http://promises-aplus.github。com/promises-spec /#promise_states)(3.1.2.1。&3.1.3.1)、それがjQueryのシステムの仕組みです。 – MegaHit
おそらく私の質問は十分にはっきりしませんでした。私は、約束の機能を提供するライブラリではないことを約束する* alternatve *を探しています... – Haroldo
代わりに直接約束を取り付ける、あなたはコールバックが設定された間隔で行われた定期的な約束やAjax呼び出しをサブスクライブすることを可能にする約束のラッパーを行うことができます。
var cycle = function(func, interval){
var _this = this;
// Use jQuery's triggers to manage subscriptions
var o = $({});
this.publish = o.trigger.bind(o);
this.subscribe = o.on.bind(o);
this.unsubscribe = o.off.bind(o);
var call = function(func){
clearTimeout(_this.timeout);
func().done(function(response){
_this.publish('ajax:update', response);
_this.timeout = setTimeout(function(){
call(func);
}, interval);
});
};
call(func);
return this;
};
var ajax_promise = function(){
return $.getJSON('http://localhost/some/data.json');
};
var my_callback = function(response){
// Do stuff
};
cycle(ajax_promise, 10000).subscribe('ajax:update', my_callback);
私が考える何を探しているのはイベントです。 onとtriggerを使用してjQueryの例:
var data_handler = $({});
function get_data(new_foo) {
// Do stuff, then send the event
data_handler.trigger('new_data', {foo: new_foo});
}
data_handler.on('new_data', function(e, data) {
console.log('Handler 1: ' + data.foo);
});
data_handler.on('new_data', function(e, data) {
console.log('Handler 2: ' + data.foo);
});
get_data(1);
get_data(2);
出力:
Handler 1: 1
Handler 2: 1
Handler 1: 2
Handler 2: 2
1)あなたはjQueryのの残りの部分を使用する必要はありません。 「競合なし」モードで構成することができます。 2)他にどのように遅延がありますか?コールバックはJavaScriptで実装されますか? –
非同期プログラミングのポイントは、開始されたアクションがスレッドをブロックせずに完了したことをクライアントに通知するためのコールバックを持つことです。クライアントに通知したくない場合は、コールバックを無視して何もしないでください。 – Asdfg
「複数回使用する」という意味は分かりません。 – Pointy