我刚刚实现了我的第一个函数,它根据 AngularJS 中的另一个承诺返回一个承诺,并且它有效。但在我决定之前just为了做到这一点,我花了 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'); });
Demo: http://jsfiddle.net/EvN9P/
当您在异步函数中使用 Promise 时,该函数会创建空 Promise,保留对其的引用,并返回该引用。处理异步响应的代码将触发 Promise 中的操作,调用异步函数的代码将定义该操作。
由于其中任何一个都可以按任何顺序发生,因此调用异步函数的代码可以保留承诺并在需要时随时定义操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)