0

是否有任何 JavaScript 库提供语法上类似于 C++ 的承诺和期货。基本上我们想在 webworkers 中使用它们,我不想要回调接口。我希望网络工作者阻止未来并在 UI 线程设置未来的值时继续。我已经查看了每一个可能的承诺和未来的库,但每件事都需要回调,我们的代码已经是一团糟,我们不想让它进一步复杂化。

4

1 回答 1

0

http://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses-promise.js

实现 SES/ES5 的承诺。将 Q 导出到全局范围。

主要取自 Tyler Close 的 ref_send 实现,并添加了一个商标表来支持函数的承诺。

顺便说一句,Mark Miller 正在编写 JavaScript 的并发模型,并为该语言的未来版本添加带有语法糖的最终发送语义。来自http://wiki.ecmascript.org/doku.php?id=strawman:concurrency

  1. 现实:将 JavaScript 的事实上的并发模型编码和形式化为法理模型。
  2. Promises:一种对(Q(p).post(), Q(p).get())可能无法同步访问的对象(例如远程对象)进行异步请求的方法。 (Q(p).when())通过将回调注册为第一类值的能力,减轻本地事件循环编程的负担。 (Q.async, yield:)用于隐式注册承诺的浅层延续。
  3. 语法糖。中缀“!” 运算符:“.”的最终模拟,用于使最终请求看起来更像即时请求。
  4. (Q.makePromise())Promise 扩展机制,以便 Promise 处理程序可以将本地 Promise 操作转换为远程消息。传输独立性:使用远程对象消息作为对称抽象层,隐藏上面列出的各种传输以及服务器到服务器 TCP 和 UDP 传输之间令人讨厌的差异。
  5. (Vat())一种事件循环生成机制,用于生成与生成它的事件循环同时运行的新事件循环。Worker 独立性:使用 Vat API 作为抽象层,围绕在浏览器上生成 worker 或在服务器上生成进程。
  6. (Vat.evalLater(), where())将 JavaScript 本身用作移动代码,因此事件循环可以安全地将新行为注入到其他事件循环中。Async-PGAS:为异步分区全局地址空间模型的表达提供分布式模拟。
于 2012-08-07T04:32:39.043 回答