问题标签 [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 投票
5 回答
17611 浏览

jquery - 使用带有承诺的 jQuery 加载

我仍在努力解决deferred问题,所以考虑到这一点,我对如何执行以下操作有疑问。

我和我的团队有 3 个单独.load()的方法,每个方法都获取一个特定的模板并将其附加到同一个容器中。如您所想,每次加载所需的时间不同,因此当内容加载时,它以“阶梯式”方式加载(1,然后 2,然后 3)。我想使用deferred对象并等到它们全部完成,然后同时附加它们以删除“阶梯”动作。

所有三个调用都类似于上面的调用。

我怎样才能做到这一点?

0 投票
3 回答
1272 浏览

c++ - 如何反转 set_value() 并“停用”承诺?

我在这里有一个关于同步的总 n00b 问题。我有一个'writer'线程,它在每次迭代时为一个promise分配一个不同的值'p'。我需要'reader'线程等待这个值的shared_futures然后处理它们,我的问题是我如何使用future/promise来确保reader线程在执行他们的处理任务之前等待'p'的新更新每次迭代?非常感谢。

0 投票
5 回答
105716 浏览

javascript - JavaScript 中的 Deferred、Promise 和 Future 有什么区别?

延期、承诺和期货之间有什么区别?
这三个背后是否有普遍认可的理论?

0 投票
1 回答
382 浏览

javascript - 在 jQuery 延迟对象中设置依赖项的简写是什么?

jQuery 延迟对象是否有任何简写来设置依赖关系,即“当我完成时,那件事也完成了吗?” 下面感觉很麻烦:

我喜欢类似的东西b.alsoResolves(a)。我查看了文档,但似乎找不到任何合适的东西。有没有比上述方法更好的方法来创建延迟对象之间的依赖关系?

0 投票
3 回答
5151 浏览

python - 在 Python 中设计异步 API

(注意:这个问题严格来说是关于 API 的设计,而不是关于如何实现它;即我只关心我的 API 的客户端在这里看到了什么,而不是我必须做什么才能使其工作。)

简单来说:我想知道 Python 中明确的未来(又名承诺,又名延迟,又名任务 - 名称因框架而异)的已建立模式 - 如果有的话。以下是更详细的描述。

考虑一个简单的 Python API,如下所示:

这是一个同步版本 - 如果线路尚不可用,它将阻塞。现在假设我想提供一个相应的异步(非阻塞)版本,它允许注册一个回调,以便在操作完成后调用。例如,一个简单的版本可能如下所示:

现在,在其他语言和框架中,这些 API 通常存在现有的强制或至少是完善的模式。例如,在版本 4 之前的 .NET 中,通常会提供一对BeginReadLine/EndReadLine方法,并使用 stockIAsyncResult接口来注册回调并传递结果值。在 .NET 4+ 中,使用System.Threading.Tasks, 以启用所有任务组合运算符(WhenAll等),并与 C# 5.0async功能挂钩。

再举一个例子,在 JavaScript 中,标准库中没有什么可以涵盖这一点,但 jQuery 已经普及了现在单独指定的“延迟承诺”接口。因此,如果我要在 JS 中编写 async readLine,我会命名它,并在返回值上readLineAsync实现方法。then

Python 领域的既定模式(如果有的话)是什么?查看标准库,我看到几个提供异步 API 的模块,但它们之间没有一致的模式,也没有像“任务”或“承诺”的标准化协议。也许有一些模式可以从流行的第三方库中派生出来?

我还在 Twisted 中看到了(在这种情况下经常提到的)Deferred类,但它似乎针对通用的 Promise API 进行了过度设计,而是适应了该库的特定需求。它看起来不像是我可以轻松克隆一个接口(而不依赖于它们)的东西,这样如果客户在他的应用程序中同时使用这两个库,我们的 Promise 就可以很好地互操作。是否有任何其他流行的库或框架具有为此明确设计的 API,我可以在不直接依赖的情况下复制(并与之互操作)?

0 投票
2 回答
922 浏览

javascript - CommonJS 承诺的使用:拒绝与异常

我有一个函数,downloadAsync()它返回一个 CommonJS 承诺(使用Q)。它可能以两种方式失败:

  1. 该文件已经可以下载,在这种情况下我们立即知道。
  2. 下载过程可能会失败,在这种情况下我们会在一段时间后知道。

在情况 (1) 中,由于我在任何异步发生之前就知道,我可以抛出异常。在情况(2)中,我不得不拒绝承诺。

我的问题是,我的 API 是否应该统一并且总是通过拒绝承诺来表示错误?或者我应该为立即确定的无效状态条件抛出异常?再举一个例子,如果用户向我传递了一个无效的参数,那么抛出错误似乎比拒绝承诺更明智。

弄清楚“异常”的承诺拒绝到底是多么的好,也很好;那里的使用是否与异常使用实践一对一地映射,或者我们是否也将其用于非异常故障?

0 投票
1 回答
2194 浏览

c++ - 如何获得 promise::set_exception(x) 的参数?

我在几个地方找到了关于如何使用promise的引用copy_exception,但我在当前的 FDIS 中找不到它。set_exception()自那些博客以来,是否有其他使用方法?

例如这里

我在std::current_exception() 这里找到。

因此我的问题:

  • 我是否应该一直使用current_exception(),即使我没有捕捉到“ ...”?
  • 还是有新的不同名称copy_exception
0 投票
1 回答
12528 浏览

jquery - .resolve() 和 .promise() 有什么区别?

我正在研究 jQuery 的延迟特性。我在互联网上尝试了几个例子。我理解它的概念,但我不明白 和 之间的resolve()区别promise()

resolve()和 和有什么区别promise()

0 投票
1 回答
1089 浏览

javascript - 在 Windows 上的 Node.js 上使用 Promise

如何在 Windows 上运行的 Node.js 上使用 Promise?对于我的一生,我似乎无法找到任何例子来工作......

例如,这样的事情不起作用:

投入 requires 也无济于事:

我得到的只是:

或者

而且我似乎也无法从最新的 API 中找到承诺......(http://nodejs.org/docs/latest/api/)

我不解。

0 投票
2 回答
16002 浏览

jquery - jQuery等待所有页面动画完成

我知道如何等到动画完成

并具有多个元素

但是我如何等到页面上的所有元素都完成动画?我宁愿不只是把我正在等待的每一个元素都放进去。