问题标签 [promise]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1802 浏览

javascript - 如何从 node.js 快速操作处理程序中进行延迟响应?

使用Express(对于node.js)如何在回调后编写响应?

以下是一个最小的示例。 posix.cat是一个函数,它返回一个承诺,up对结果做一些事情,我想把它作为响应发送。

客户端永远不会得到响应。

我也尝试过这方面的变化:

但这往往会使一切崩溃:

0 投票
4 回答
6314 浏览

javascript - CommonJS 中的“承诺”抽象有什么好处?

我正在阅读这篇文章,关于承诺抽象的部分对我来说似乎有点过于复杂。下面给出一个例子:

在我看来,以下代码可以用更少的代码行提供相同的结果:

0 投票
1 回答
199 浏览

factorial - Unlambda d 函数

我想我需要详细说明 D 函数在 unlambda 中的工作原理。现在我正在尝试使用 Y 组合器创建一个函数(阶乘),但它总是会导致某种无限循环。或段错误,取决于解释器。我很确定 D 是我想在这里使用的。我试过这个:

它有相同的无限循环。有人认为他们可以帮助我理解 unlambda 中的 D 吗?

...

在 unlambda 表示法中,我的功能是

我很确定如果它被正常评估,首先是左边,它会起作用,但我不确定。

提前致谢。

0 投票
9 回答
99292 浏览

javascript - 理解 Node.js 中的 Promise

据我了解,调用异步代码的方式有以下三种:

  1. 事件,例如request.on("event", callback);
  2. 回调,例如fs.open(path, flags, mode, callback);
  3. 承诺

我找到了node-promise 库,但我不明白。

有人可以解释一下承诺的全部内容以及我为什么要使用它吗?

另外,为什么从 Node.js 中删除它?

0 投票
6 回答
14937 浏览

clojure - Clojure 期货和承诺有何不同?

futures 和 promises 都会阻塞,直到它们计算出它们的值,那么它们之间有什么区别呢?

0 投票
11 回答
303857 浏览

jquery - jQuery 延迟和承诺 - .then() 与 .done()

我一直在阅读有关 jQuery 延迟和承诺的信息,但我看不出使用.then()&.done()成功回调之间的区别。我知道Eric Hynds提到了这一点.done().success()映射到相同的功能,但我猜也是如此,.then()因为所有回调都是在成功操作完成时调用的。

谁能告诉我正确的用法?

0 投票
2 回答
4490 浏览

scala - 是否等待 Scala Future 阻塞线程?

当我等待Scala Future 的结果时,它的行为更像是receive还是像react一样,即它是阻塞线程,还是在结果可用时安排继续?

0 投票
2 回答
432 浏览

scala - 尾递归和 scalaz 承诺

我目前正在玩 Scalaz 非阻塞期货。承诺。我正在努力使以下函数尾递归:

wherep是一个带有 type 的谓词,是一个带有 typeI=>Booleanf并发函数I=>Promise[I]

该方法在没有注释的情况下编译。

有什么提示吗?谢谢

0 投票
4 回答
2311 浏览

jquery - jquery deferred 把失败变成成功

因此,在使用 jQuery 延迟并$.when并行加载许多对象时。

现在,b.ajax()有时会失败,但我实际上不在乎。我只想等到所有调用都完成后再调用complete()。

不幸的是,一旦b失败,就会when()拒绝,并且永远不会触发then()回调。这是 AFAIK 的预期行为$.when(),但在这种情况下不适合我。

我实际上想要一种方式说:

或者也许有不同的使用方式when(),或更合适的构造?

0 投票
1 回答
611 浏览

multithreading - 在 Linux 2.6+ 中替换系统调用(syscalls)

我正在考虑编写一个用户态线程库,因为在这个领域似乎没有积极的工作,我相信 C++0x 的承诺和未来可能会给这个模型一些力量。不幸的是,为了使这个模型工作,必须确保阻塞调用的上下文切换。因此,我想拦截每个系统调用,以便用异步版本替换它。有一些警告:

  • 我知道几乎每个常规系统调用都有异步系统调用,但出于向后兼容性的原因,这不是一个可行的解决方案。
  • 我知道在 Linux 2.4 或更早版本中可以直接更改 sys_call_table,但这已经消失了。
  • 因为我希望我的库在需要时被静态链接,所以 LD_PRELOAD 技巧是不可行的。
  • 同样,内核模块也不是一个选项,因为它应该是一个用户态库。
  • 最后,出于类似原因, ptrace() 也不是一个选项。我不能让我的图书馆为了使用而分叉一个新进程。

这可能吗?