@kriskowal による優れた記事「A General Theory of Reactivity 」を参照してください。その中で、彼は Q 規則を使用して、promise キューの次の実装を提供します。
function PromiseQueue() {
var ends = Promise.defer();
this.put = function (value) {
var next = Promise.defer();
ends.resolve({
head: value,
tail: next.promise
});
ends.resolve = next.resolve;
};
this.get = function () {
var result = ends.promise.get("head");
ends.promise = ends.promise.get("tail");
return result;
};
}
defer
やなどの Q 機能を使用していることがわかりますget
。これをネイティブの約束を使用するように適応させる方法を先にまとめようとしていますが、大規模な脳のフリーズが発生しています。(これに取り組んでいる過程で、Chrome がPromise.defer
仕様にない方法を提供しているように見えるという事実にも遭遇しました。)
誰か助けてくれませんか?