我显然对js承诺解决的方式或“返回”的语义存在误解。如何阻止JavaScript承诺并返回已解决的结果?
我被一个函数调用,期望我是同步的 - 返回一个值。计算该值需要一些异步代码(具体而言,在dstore Collection
给ForEach方法我试图完成大约这一点,但这并不在工作,该功能mySynchronousFunction没有返回值。
function mySynchronousFunction() {
var accumulator = {};
var myPromise = doAsynchronousThingThatSideEffectsAccumulator();
// Now my caller is expecting the value of accumulator.
myPromise.then(function() {return accumulator;})
}
据我所知,JS必须考虑到单线程的实现,所以它的不冷静阻止,但必须有胶合异步到同步的代码结构,我只是错过了已经。
这不是关于允许单线程实现 - **所有**实现都必须是单线程的。 – meagar 2015-04-03 22:48:21
@meagar这不是真的 - 没有说所有的实现都是单线程的 - 例如Java中的Rhino。 – 2015-04-04 08:18:50
无法添加答案,但这对我有帮助:http://www.tivix.com/blog/making-promises-in-a-synchronous-manner/ – rainabba 2016-06-03 16:01:58