You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
735 B
41 lines
735 B
dojo.provide("dojox.lang.async.topic"); |
|
|
|
// Source of Deferred for topics |
|
|
|
(function(){ |
|
var d = dojo, topic = dojox.lang.async.topic; |
|
|
|
topic.from = function(topic){ |
|
return function(){ |
|
var h, cancel = function(){ |
|
if(h){ |
|
d.unsubscribe(h); |
|
h = null; |
|
} |
|
}, |
|
x = new d.Deferred(cancel); |
|
h = d.subscribe(topic, function(){ |
|
cancel(); |
|
x.callback(arguments); |
|
}); |
|
return x; |
|
}; |
|
}; |
|
|
|
topic.failOn = function(topic){ |
|
return function(){ |
|
var h, cancel = function(){ |
|
if(h){ |
|
d.unsubscribe(h); |
|
h = null; |
|
} |
|
}, |
|
x = new d.Deferred(cancel); |
|
h = d.subscribe(topic, function(evt){ |
|
cancel(); |
|
x.errback(new Error(arguments)); |
|
}); |
|
return x; |
|
}; |
|
}; |
|
})(); |