gpt4 book ai didi

javascript - JavaScript 中的 Promise 是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 23:00:26 28 4
gpt4 key购买 nike

我刚刚实现了我的第一个函数,它根据 AngularJS 中的另一个 promise 返回一个 promise ,并且它有效。但在我决定这么做之前,我花了 2 个小时阅读并尝试理解 Promise 背后的概念。我想如果我可以编写一段简单的代码来模拟 Promise 的工作原理,那么我就能够从概念上理解它,而不是在不真正了解它是如何工作的情况下使用它。我无法编写该代码。

那么,有人可以用普通 JavaScript 来说明 Promise 是如何工作的吗?

最佳答案

Promise 基本上是一个具有两个方法的对象。一种方法是定义要做什么,另一种方法是告诉何时做。必须能够以任意顺序调用这两个方法,因此该对象需要跟踪调用了哪一个:

var promise = {
isDone: false,
doneHandler: null,
done: function(f) {
if (this.isDone) {
f();
} else {
this.doneHandler = f;
}
},
callDone: function() {
if (this.doneHandler != null) {
this.doneHandler();
} else {
this.isDone = true;
}
}
};

您可以先定义操作,然后触发它:

promise.done(function(){ alert('done'); });
promise.callDone();

您可以先触发操作,然后定义它:

promise.callDone();
promise.done(function(){ alert('done'); });

演示:http://jsfiddle.net/EvN9P/

当您在异步函数中使用 Promise 时,该函数会创建空 Promise,保留对其的引用,并返回该引用。处理异步响应的代码将触发 Promise 中的操作,调用异步函数的代码将定义操作。

由于其中任何一个都可以按任何顺序发生,因此调用异步函数的代码可以保留 promise 并随时定义操作。

关于javascript - JavaScript 中的 Promise 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18422021/

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