Q.所有工作都不起作用
Q.all is not working
我的节点有问题.js e2e 测试。我想等待 2 个承诺来解决。但是由于某种原因,当我使用Q.all时,它只是冻结了我的应用程序。我正在使用 kriskowal 的 Q 1.0.0。
这有效:
var doStuff = function() {
var promiseA = getPromiseA();
return promiseA;
}
var prepareTestData = function(done) {
doSomething()
.then(doStuff)
.then(done);
}
但这不会:
var doStuff = function() {
var promiseA = getPromiseA();
var promiseB = getPromiseB();
return [promiseA, promiseB];
}
var prepareTestData = function(done) {
doSomething()
.all(doStuff)
.then(done);
}
有人可以帮助我解决我缺少的东西吗?
*
更新 *
对你的问题的简化答案是 all() 原型方法不接受参数,所以 .all(doStuff) 只在 doSomething() 返回的承诺上调用 .all(),而 doStuff 最终成为一个从未使用的参数。 最简单的解决方案是使用nikc.org的解决方案。
有两种方法可以在 Q 中使用.all()
。
一种是对一系列承诺使用Q.all()
来创建一个承诺,其结果是这些承诺的所有决议的数组。
var doStuff = function() {
var promiseA = getPromiseA();
var promiseB = getPromiseB();
return Q.all([promiseA, promiseB]);
}
var prepareTestData = function(done) {
doSomething()
.then(doStuff) // use then here
.then(done);
}
另一种(如nikc.org的回答所示)是调用.all()
一个承诺,其结果是一系列承诺。这将产生一个新的承诺,其结果是所有这些承诺的一系列决议:
var doStuff = function() {
var promiseA = getPromiseA();
var promiseB = getPromiseB();
return [promiseA, promiseB];
}
var prepareTestData = function(done) {
doSomething()
.then(doStuff)
.all()
.then(done);
}
在这两种情况下,传递给 done
的结果将是一个解析值为 promiseA
和 promiseB
的数组。
对Promise.all
的调用应该在调用返回承诺数组的doStuff
之后。或者,您可以从doStuff
return Q.all(Array)
。
var prepareTestData = function(done) {
doSomething()
.then(doStuff) // array returned here
.all() // all creates a promise of promises
.then(done);
}
相关文章:
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- Windows.Open 在 window.Location 工作时不起作用
- 带有向下钻取的 Amchart 图表工作正常,但“后退”按钮不起作用
- Javascript/AAJAX在Opera中不起作用,在FF/IE/Chrome中完美工作
- 意思是.js - 登录后重定向用户 - 在本地工作,但在部署时不起作用
- .split() 数据属性在应该工作的时候不起作用
- jQuery选择器在脚本中不起作用,但在控制台中工作
- 在键上验证正在工作,但在按键时它不起作用
- addEventListener 在 Javascript 中不起作用,但 jQuery Click 正在工作
- 表单验证在 HTML 中工作的 Visualforce 中不起作用
- 代码在jsfiddle中工作,但在本地服务器中不起作用
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- 为什么我的左拖动/滑块工作,但右拖动/滑块不起作用
- 对链接的 svg 进行动画处理不起作用;内联时工作正常
- jQuery SlideToggle() 在 FireFox 中不起作用,在 Chrome 中工作
- Ajax load在chrome中不起作用,而在Fire fox中工作
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- EventSource onmessage()在onopen()和oneror()正常工作的地方不起作用
- 如果我在其中使用alert,Javascript代码就可以工作,否则它'It’不起作用