这是一个非常神秘的问题。编写接受单个值并返回兼容的Promises/A+并用提供的值立即解析的函数的简单方法是什么。我想这样做而不使用现有的库。我想我已经解决了,但是规范非常具体,我觉得我可能错过了一些东西。我也很好奇,是否有更好的方法可以做到这一点。本质上,以下内容是否符合A + / Promises规范以创建已解决的承诺。var resolvedPromise = (function() { function makePromise(isRejected, value) { var promise1; promise1 = { then: function(onFulfilled, onRejected) { var callback, promise2; promise2 = promise1; callback = isRejected ? onRejected : onFulfilled; if (typeof callback === 'function') { try { promise2 = callback(value); } catch (ex) { promise2 = makePromise(true, ex); } } if (promise2 == null || typeof promise2.then !== 'function') { promise2 = makePromise(false, promise2); } return promise2; } } return promise1; } return makePromise.bind(null, false);})(); 最佳答案 编写接受单个值并返回兼容的Promises / A +的函数的简单方法是什么,该Promises / A +将立即使用提供的值进行解析。我想这样做而不使用现有的库。空无一人。基本上,在不使用现有库的情况下创建Promises / A +兼容的Promise意味着您必须编写自己的兼容库;这是一项不平凡的任务。 规格非常具体,我觉得我可能错过了一些东西。Promises / A +规范仅涉及Promise的.then方法应如何工作,以及库应如何处理具有then方法但不是自己Promise类型实例的对象。规范没有说明如何创建Promise对象或如何创建Promise对象,也没有说明如何解决。 我想我已经知道了不,您的then方法违反了规范的一些要点;最具体的#2.2.4: 在执行之前不得调用onFulfilled或onRejected 上下文堆栈仅包含平台代码。 这里的“平台代码”表示引擎,环境和承诺 实施代码。实际上,此要求可确保 事件发生后,onFulfilled和onRejected异步执行 循环调用其中的then并使用新堆栈。这可以是 使用“宏任务”机制(例如setTimeout或 setImmediate,或带有“微任务”机制,例如 MutationObserver或process.nextTick。自承诺实施以来 被认为是平台代码,它本身可能包含任务计划 在其中称为处理程序的队列或“蹦床”另外,除了异步执行它们带来的主要复杂化(即使已解决了承诺)并且仍然立即为结果返回承诺之外,当前代码也不遵循Promise Resolution详细信息,而仅返回所有带有方法立即使用,即使它们不是一致的承诺。 我也很好奇,是否有更好的方法可以做到这一点。使用现有的库:-)关于javascript - 创建已解决的A + promise ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25821939/ 10-12 00:51