gpt4 book ai didi

angular - 在@angular 的源代码中,为什么 NgForm 在它的函数中使用一个已经解析的 promise?

转载 作者:太空狗 更新时间:2023-10-29 18:32:15 26 4
gpt4 key购买 nike

我已经开始通读@angular 源代码,部分是为了学习,部分是因为一些文档似乎遗漏了一些东西。在表单指令中,我遇到过这样的代码块:

const resolvedPromise = Promise.resolve(null);
...
export class NgForm extends ControlContainer implements Form {
...
addControl(dir: NgModel): void {
resolvedPromise.then(() => {
...
});
}
}

这个具体例子来自ng_form ,并且此模式在整个文件中重复出现。每个使用 this 的函数都没有返回值,我认为这是相关的。

使用这个 resolvedPromise 的目的是什么?我的理解是,由于 resolvedPromise 在调用此函数之前已经完成,因此提供给 then 函数的回调将立即执行。在这种情况下,为什么还要费心使用 Promise?

最佳答案

.then() 异步执行代码,但安排为微任务而不是事件队列中的新任务。

参见示例 https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/用于演示差异。

在当前事件完成和下一个事件处理之前,不仅当前事件处理程序,而且微任务队列都需要处理完整。

这样代码可以异步执行,而不会受到其他事件处理程序的干扰和导致竞争条件。

关于angular - 在@angular 的源代码中,为什么 NgForm 在它的函数中使用一个已经解析的 promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41374361/

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