gpt4 book ai didi

javascript - 将回调附加到充当一次触发的全局事件的 promise 的概念是否有一个名称? (如 $(document).ready())

转载 作者:行者123 更新时间:2023-12-03 06:17:53 26 4
gpt4 key购买 nike

这可能是一个奇怪的问题,但我试图在评论中命名这个概念:

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.
});

这里的想法是能够在代码中的任何位置将任意数量的回调附加到每个页面执行触发一次的“事件”,有点像 jQuery 自己的 $(document).ready()...特别是在某种意义上,如果附加回调时“字体已加载”事件已经“触发”,则由于 promise ,回调将立即执行。如果绑定(bind)发生在事件之后,事件处理程序(使用 $.on() 和 $.trigger())根本不会执行,所以我觉得“事件”不是正确的词。

当然,我意识到“不”是对该问题的完全有效的答案,但也请随意讨论。

最佳答案

Is there a name for the concept of attaching callbacks to a promise that acts as a global event that fires once?

据我所知。然而,这正是 Promise 众所周知的行为,因此,如果您在被问及这个概念时只说“Promise”,那么每个人都会理解它是如何工作的。

实际上,不公开附加“事件”回调的函数,而只是公开 promise 本身会简化大多数代码,并允许链接。至少改成

function all_fonts_loaded(callback) {
return all_fonts_loaded_promise.then(callback);
// ^^^^^^ ^^^^
}

关于javascript - 将回调附加到充当一次触发的全局事件的 promise 的概念是否有一个名称? (如 $(document).ready()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com