将回调附加到充当一次触发的全局事件的承诺的概念是否有名称? (比如 $(document).ready())
Is there a name for the concept of attaching callbacks to a promise that acts as a global event that fires once? (like $(document).ready())
这可能是一个奇怪的问题,但我试图在评论中命名这个概念:
var fonts = ['font1', 'font2'];
var font_loaded_deferreds = [];
fonts.each(function(n, font) {
var font_loaded_deferred = $.Deferred();
$.ajax({
// AJAX options to load the font here...
}).then(function(data) {
font_loaded_deferred.resolve();
});
font_loaded_deferreds.push(font_loaded_deferred);
});
var all_fonts_loaded_promise = $.when.apply($, font_loaded_deferreds);
var all_fonts_loaded = function(callback) {
all_fonts_loaded_promise.done(callback);
};
用法:
all_fonts_loaded(function() {
// refresh stuff that depends on text size etc.
});
这里的想法是能够在代码的任何位置将任意数量的回调附加到每页执行一次触发的 "event",有点像 jQuery 自己的 $ (document).ready()... 特别是如果 "fonts loaded" 事件已经 "fired" 当回调被附加时,由于承诺,回调会立即执行。如果绑定发生在事件之后,事件处理程序(带有 $.on() 和 $.trigger())将根本不会执行,所以我觉得 "event" 不是正确的词。
当然,我知道 "no" 是该问题的完全有效答案,但也欢迎大家讨论。
Is there a name for the concept of attaching callbacks to a promise that acts as a global event that fires once?
据我所知不是。然而,这正是众所周知的行为承诺,所以如果你在被问及这个概念时只说 "promise" 那么每个人都会理解它是如何工作的。
实际上,不公开附加 "event" 回调的函数,而是公开承诺本身将简化大多数代码,并允许链接。至少改成
function all_fonts_loaded(callback) {
return all_fonts_loaded_promise.then(callback);
// ^^^^^^ ^^^^
}
这可能是一个奇怪的问题,但我试图在评论中命名这个概念:
var fonts = ['font1', 'font2'];
var font_loaded_deferreds = [];
fonts.each(function(n, font) {
var font_loaded_deferred = $.Deferred();
$.ajax({
// AJAX options to load the font here...
}).then(function(data) {
font_loaded_deferred.resolve();
});
font_loaded_deferreds.push(font_loaded_deferred);
});
var all_fonts_loaded_promise = $.when.apply($, font_loaded_deferreds);
var all_fonts_loaded = function(callback) {
all_fonts_loaded_promise.done(callback);
};
用法:
all_fonts_loaded(function() {
// refresh stuff that depends on text size etc.
});
这里的想法是能够在代码的任何位置将任意数量的回调附加到每页执行一次触发的 "event",有点像 jQuery 自己的 $ (document).ready()... 特别是如果 "fonts loaded" 事件已经 "fired" 当回调被附加时,由于承诺,回调会立即执行。如果绑定发生在事件之后,事件处理程序(带有 $.on() 和 $.trigger())将根本不会执行,所以我觉得 "event" 不是正确的词。
当然,我知道 "no" 是该问题的完全有效答案,但也欢迎大家讨论。
Is there a name for the concept of attaching callbacks to a promise that acts as a global event that fires once?
据我所知不是。然而,这正是众所周知的行为承诺,所以如果你在被问及这个概念时只说 "promise" 那么每个人都会理解它是如何工作的。
实际上,不公开附加 "event" 回调的函数,而是公开承诺本身将简化大多数代码,并允许链接。至少改成
function all_fonts_loaded(callback) {
return all_fonts_loaded_promise.then(callback);
// ^^^^^^ ^^^^
}