问题标签 [es6-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.
ecmascript-6 - 承诺 es6 和 superagent
我正在尝试将 es6 Promise 与 superagent 一起使用。我正在尝试调用一个包含超级代理请求的函数。
这是包装超级代理的功能
我收到一个错误
enter code here Uncaught TypeError: Cannot read property 'then' of undefined
当我将函数的返回更改为
看起来数据是在我的浏览器的开发工具中返回的,但我无法在 .then 函数中访问它。我怎样才能从承诺中得到回应。
node.js - Mocha 异步回调和 Sequelize 承诺不同步?
我正在使用mocha及其钩子编写测试用例,该钩子使用andbeforeEach
删除并重新创建所有表。sequelize.drop
sequelize.sync
lib/testutils.js
测试/控制器/controllers.js
(A)这确实有效:
(B)这不起作用:
我不明白为什么testutils.deleteAll().then(done)
没有工作,第一个测试用例it("should....", function(done)
没有等待beforeEach
钩子完成。我得到了TypeError: Converting circular structure to JSON
。然而,testutils.deleteAll().then(function(){ done(); })
确实奏效了。
我的问题是为什么(B)不工作而(A)工作?任何想法?有什么不对?
javascript - Promise.all:解析值的顺序
查看MDN,看起来values
传递给then()
Promise.all 的回调包含按承诺顺序排列的值。例如:
任何人都可以引用规范说明values
应该按哪个顺序排列吗?
PS:运行这样的代码表明这似乎是真的,尽管这当然不能证明——这可能是巧合。
javascript - 中断浏览器事件的繁重计算的模式
我正在做一个客户端模拟,它可以实时进行后台计算和视图刷新。但是,由于模拟始终是实时的,CPU 最终会在用户输入和编辑过程中进行大量不必要的工作。
我想要实现的是一种杀死用户事件的整个序列的方法。
主应用程序中的预期用法:
网络工作者的预期用法:
我环顾四周,可以想到以下工具和模式:
setTimout(fcn,0) || setImmediate(fcn) shim :将主脚本和工作线程中的序列内的各个步骤包装起来,setTimeout(fcn,0)
以在序列结束之前处理新事件。
此示例与 setTimeout 一起使用,但在按键事件总是最后出现的 setImmediate 中失败。
debounce :这是典型的答案,似乎不适用于我的情况。延迟和批处理用户输入会以更长的处理时间为代价部分降低处理强度。
Promises:我已经在对工作结果使用 Promise,并且可以在步骤之间引入额外的 Promise 来中断序列并处理新事件。我已经尝试(但失败了)使用标志检查或Promise.race
.
带杀旗
与Promise.race
问题 在事件中终止序列的推荐模式是什么?
javascript - 谷歌浏览器中错误的承诺和处理
我正在测试XMLHttpRequest
用 HTML5 重写 som -code Promise
。
我犯了一个错误,代码thePromise.then(failingCode)
失败了。这会调用reject
设置Promise
.
我不得不搜索一段时间来捕捉错误,因为我没有得到任何调用堆栈,也没有发生错误的行号。
这当然很不方便。
我该如何处理?我应该向 Google Chrome 开发人员发送错误报告吗?或者,是我自己的错吗?
javascript - 如何处理对后端服务进行相同调用的多个浏览器脚本
我有一个网页,其中的不同部分都需要相同的后端数据。每个都是孤立的,因此它们最终都会对后端进行相同的调用。
当一个已经在进行中并且由同一网页上的不同代码段启动时,避免调用 Web 服务器的最佳方法是什么?
这是一个例子。我将使用 setTimeout 来模拟异步调用。
假设有一个异步函数返回联系人列表,在这个例子中它基本上是一个简单的字符串数组:
现在,让我们创建三个单独的函数,每个函数都出于不同的目的调用上述函数。
转储联系人列表:
确定特定联系人是否在列表中:
获取第一个联系人的姓名:
下面是一些使用这三个函数的示例代码:
上述例程使用全局 log() 函数。可以使用 console.log() 代替。上面的 log() 函数记录到浏览器窗口,实现如下:
并在 html 中需要以下内容:
当上面的代码运行时,你会看到:
和
三次,这是不必要的。
如何解决这个问题?
此示例在 Plunker 上可以执行: http ://plnkr.co/edit/6ysbNTf1lSf5b7L3sJxQ?p=preview
javascript - 使用原生承诺循环;
我正在尝试使用本机ES6 承诺创建一个异步循环它有点工作,但不正确。我想我在某个地方犯了一个巨大的错误,我需要有人告诉我它在哪里以及它是如何正确完成的
现在输出:
好的部分:它到达了终点。
不好的部分:它捕获了一些错误,我不知道为什么。
javascript - 如何在 .then() 链中访问先前的承诺结果?
我已经将我的代码重组为Promise,并构建了一个美妙的长而扁平的 Promise 链,由多个.then()
回调组成。最后我想返回一些复合值,并且需要访问多个中间承诺结果。但是,序列中间的分辨率值不在最后一个回调的范围内,我该如何访问它们?
javascript - 带有异步调用的同步循环
这是我需要完成的:
thePromise
我有一个返回承诺的函数(我们称之为)。
我有一个包含不同参数的数组来运行thePromise
。例子:
我将解析value
到一个变量,我们称之为total
。
这是我卡住的地方:只有当承诺的结果总和total
低于定义的数量时,我才需要使用下一组参数运行承诺。
我尝试使用,但这不起作用,因为在我调用函数之前调用了下一个承诺。async
.each()
next()
当前(不工作)解决方案:
javascript - 在 Angular (ES6) 中使用 yield
我正在玩 ES6 并尝试yield
处理角度请求。var data = yield getData();
没有按照我预期的方式工作。我得到了{"value":{"$$state":{"status":0}},"done":false}
,我想得到{"value":"its working!","done":true}
这是我的代码。
索引.html
数据.json
结果
也非常感谢一些解释!