问题标签 [when-js]

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 回答
57 浏览

debugging - 跳到非黑盒文件中的下一个异常点

我正在尝试调试一些使用when.js. 单步执行代码,在某个时间点,我到达了 when.js 本身,然后陷入一长串的内部调用中——承诺履行、排队等。

我有when.js黑盒,但这似乎并没有太大变化。

我真正想做的是跳到下一个不在黑盒文件中的语句,然后立即停止。有没有办法做到这一点?

如果有人怀疑黑盒脚本确实表现得像这样:

在此处输入图像描述

在我的例子中,when.js 使用 browserify 编译到我们的应用程序中,并且我们已经生成了源映射。

0 投票
0 回答
44 浏览

javascript - 解析 .each() 在 when() 内不起作用

不工作。记录“已处理的 x 个用户”,但从不记录“到达这里”。承诺应该在 when() 调用期间执行,但永远不会执行。

这绝对没有意义,因为我看到的每一篇描述何时都写成这样的帖子。出于某种原因,这只是没有做任何事情。

0 投票
2 回答
58 浏览

jasmine - 用 Jasmine 惯用地测试 when.js 的 promise

when.js我正在为返回承诺的代码编写一些 Jasmine 单元测试。我不断发现自己在编写这样的代码:

捕获异常的唯一方法是使用函数(它是when.jsotherwise()的旧版本),然后似乎没有 Jasmine(2.0)函数来表示“检测到故障” - 因此是 kludgy “ ”。expect(true).toBe(false)

有没有更惯用的方式来做到这一点?

0 投票
1 回答
137 浏览

promise - when - 带有中间错误的意外 Promise 链

我想知道以下是否是正常行为?

代码

这是我运行时收到的输出

阅读 API,我期望会调用第 1.1 步,然后调用第 9 步而不是第 2 步。

这是一个错误还是我误读了 API?

感谢您的提示!

0 投票
1 回答
886 浏览

node.js - 猫鼬与诺言不同

我使用 when.js 作为 mongoose 的承诺库,并尝试获取不同的集合字段并将结果作为承诺返回

但是 getPromisedDistinct 是用 promise 函数解决的

编辑 #1 getPromisedDistinct 被称为

为什么这不解决价值?

0 投票
1 回答
136 浏览

callback - 如何从 when.js 承诺中干净地提取回调?

我需要将回调传递给签名为function('ui', {foo: bar, callback: callbackfn}). 我要传递的函数是一个When.js 承诺。

我想出的最好的:

这有效(使用延迟来防止立即执行,然后将resolve函数作为回调传递),但似乎有点令人费解。

有没有更清洁的方法?

0 投票
1 回答
385 浏览

promise - 在不引发错误的情况下中止承诺链

使用 When.js,由于用户改变主意,我们想要在中途悄悄中止承诺链。我们当前的方法是根本不解决链中的那一步——实际上让其他承诺“悬而未决”。这似乎有点脏?

如果我们拒绝承诺,那么我们的异常处理程序当然会启动。我们可以解决这个问题,使用我们检测并忽略的自定义消息,但这似乎也有点不干净。

有更好的方法吗?

这是代码的样子:

结果

为了完整起见,我将代码更改为:

0 投票
1 回答
1283 浏览

javascript - 等待 d3 加载

我正在使用d3创建一个饼图来加载饼图 -

这很好用,但是我希望在饼图完全渲染后做逻辑。

我曾尝试像这样使用when done逻辑(例如在进行 ajax 调用时)-

然而,这不起作用,因为即使馅饼没有完全加载,它也只是进入 when 子句。我怎样才能做到这一点?

0 投票
2 回答
686 浏览

javascript - 为什么 Angular 2 的模板没有从角度区域外的调用中更新?

我想我会创建一个非常简单的登录表单,其中包含组件绑定的用户名和密码属性,这些属性将通过以下步骤运行:

  1. 使用 fetch() 调用提交凭据
  2. THEN获取Response结果对象的JSON内容
  3. 然后检查该内容以获取服务器端检查的结果

如果凭据错误,它将更改一个组件属性,该属性会告诉 Angular 将一个类应用于用户名和密码输入以使它们暂时变为红色(使用 setTimeout 将其改回)

我遇到的问题是 Angular 无法正确应用该类,我不知道为什么。我决定创建一个简化的测试项目来缩小问题范围,最终导致包含 system-polyfills/when.js。

此代码依次经过 1、2、3,并将其设置在组件属性中并将其输出到调试控制台。Angular 会正确渲染组件属性,除非包含 system-polyfill,在这种情况下,它将停止在 1 并且永远不会将其更改为 2 或 3,即使控制台显示该属性实际上已更改:

我创建了以下 Plunker 来演示这种行为: http ://plnkr.co/edit/GR9U9fTctmkSGsPTySAI?p=preview

是的,显而易见的解决方案是:

  1. 不要手动包含系统填充物,或
  2. 如果需要,在 SystemJS 之前手动包含不同的 Promise polyfill

但我仍然很好奇为什么会发生这种情况,希望有人能对此有所了解(并可能有助于解决基本问题)。

编辑:这个的原标题是Why is Angular 2's template rendering misbehaving when using system-polyfills (when.js)。感谢 Thierry 和 Günter 的贡献并指出 Angular 2 对区域的使用在这里发挥了作用。对于将来遇到这种情况的任何人,这里有两篇优秀的文章,它们更详细地解释了区域,并且在您遇到这种情况时将增强您对这种情况的理解:

  1. http://blog.thoughtram.io/angular/2016/01/22/understanding-zones.html
  2. http://blog.thoughtram.io/angular/2016/02/01/zones-in-angular-2.html
0 投票
3 回答
845 浏览

javascript - 从 when.js 迁移到 ES6 Promises

我一直在使用 when.js 作为 node.js 中的 Promise。我有如下功能:

我会这样称呼:

我如何使用 ES6 Promises 做同样的事情?