问题标签 [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.
node.js - 'when-js' 或基本 amqplib rabbitmq nodejs 教程不起作用
我有最新版本的 nodejs (0.10.21、amqplib (0.1.0)( https://github.com/squaremo/amqp.node.git ) 和 rabbitmq (3.2.0)。
- 启动rabbitmq-server
- 安装 npm 包后,转到 amqp.node/examples/tutorials 并运行 ./send.js。
它报告:
[x] Sent 'Hello World!'
从 rabbitmq Web 控制台,我可以看到它创建了连接,它创建了队列“hello”。但是,它实际上并没有向队列发布任何消息。
除了 RPC 客户端/服务器之外,其他教程都不适合我——它们将创建交换、队列和通道,但不会发布消息。
我的一位朋友使用除了 OS X 10.6 而不是 10.8 之外的所有相同版本运行良好。
我已经使用节点检查器逐步检查了 amqplib 代码,并且看不到任何明显的错误。看起来确实没有创建消息框架,但是在那个级别上,我不知道目前发生了什么。
当我通过 Web 控制台或使用 Bunny + Ruby 发布消息时,它会创建一个队列并按预期发布一条消息,因此 node、amqp 和/或 OS X 10.8 而不是 rabbitmq 一定有问题。
rabbitmq 日志(同时跟踪两个日志)只提到连接打开然后很快关闭,但不报告任何错误:
=INFO REPORT==== 27-Oct-2013::20:46:16 === accepting AMQP connection <0.731.0> (127.0.0.1:56927 -> 127.0.0.1:5672)
=INFO REPORT==== 27-Oct-2013::20:46:16 ===
closing AMQP connection <0.731.0> (127.0.0.1:56927 -> 127.0.0.1:5672)
我已经嗅到了从 amqp 节点发送到 rabbitmq 的数据包。这来自 amqp.node 运行示例/教程中的第一个示例“send.js”:
http://www.limorph.com/files/amqp_amqnode_send.txt
您可以看到它如何打开连接、创建队列并关闭连接,但不发送消息。
这个来自 ruby/bunny - 你可以看到它是如何打开连接、创建队列和发布消息的。
http://www.limorph.com/files/amqp_bunny.txt
我发现如果我删除 conn.close(),它会设法发布消息。
例如
不是真正的解决方案,但它指出问题可能出在“何时”而不是 amqplib ?
非常感谢任何想法或帮助
javascript - 处理这个承诺的不同方式?
这里有一点coffeescript,但随时用javascript回答:
在其他地方,视图正在侦听add
集合上的事件……</p>
有时模型还没有完成与服务器的对话,所以它没有 anid
并且这段代码没有做想要的事情。因此,我save
使用 when.js 库将其包装在一个承诺中(when
映射到When
此处)
现在,世界上的一切都是笨拙的。我想知道的是,有没有办法then
进入该_addOne
方法,因为那是真正在等待的部分,集合本身并不介意添加一个半生不熟的模型。
如果有人可以向我展示或指出正确的方向,我将不胜感激。
javascript - “僵尸承诺”在 mocha.js 测试超时后继续
我正在使用带有 Mocha.js 的测试设置以及测试中的许多承诺。测试依赖于在 DOM 中设置的东西,并且在测试之间,DOM 被清除。但是,有时测试运行缓慢并超时。在这种情况下,它们的 Promise 会继续执行,但 DOM 在下一次测试之前被清除,因此 Promise 可能会错误地将错误抛出到下一次测试中。有没有办法在测试之间取消或销毁所有未完成的承诺?我们正在使用 when.js 承诺。
javascript - 同步异步创建的 Promise
我正在开发一个小的 nodejs 程序,并且在知道程序的所有异步操作何时完成时遇到了一些麻烦。
目前,该程序执行以下步骤:
1/ 产生一个带有一些参数的进程。此过程将在其标准输出上打印数据。
2/ 监听进程标准输出“数据”事件,每次打印某些内容时,程序调用一个函数(我们将其称为“进程”),使用数据。
3/ 这个处理函数最终会将数据插入到一个mongo数据库中,并向一个amqp服务器发送一条消息。
3/ 当没有更多数据时,程序处于空闲状态,因为与 amqp 和 mongo 数据库的连接仍然存在,所以我需要知道所有工作何时完成才能关闭连接。
所以,我尝试使用when.js来利用 Promise,但我无法让它适用于我想要实现的目标。
我让“进程”函数返回一个承诺,当 mongodb 插入和 amqp 消息发送完成时,该承诺将得到解决。在我的程序中,我正在创建一个数组,它将接收所有能够调用 when.all() 以了解它们何时全部解决的承诺。
但是由于我在生成的进程正在将数据打印到其标准输出流时异步创建 Promise,所以对 when.all() 的调用是使用一个似乎立即解决的空数组进行的。
这是一个代码示例,说明了我正在实现的目标:
你可能已经猜到了,这个程序的输出是:
有没有办法让这个代码示例以预期的顺序打印控制台消息(第一行最后打印)?
谢谢。
node.js - node.js mongoose.js memory leak?
I'm creating bower package search site (everything is open sourced) and I hit the wall. I have some memory leak (or I think I have) and I honestly don't know why it is there.
You can download it and run on Your own, but simple hint will help me greatly.
I have narrowed it down to this function call here https://github.com/kamilbiela/bowereggs-backend/blob/master/main.js#L14 ( nest.fetchAndSave() ) which is all defined here: https://github.com/kamilbiela/bowereggs-backend/blob/master/lib/nest.js
Basically it downloads a package list from internet, Json.parse and inserts it into database, plus some when.js promises.
Running this function few times creates a 30mb of memory per run, that is not cleaned by garbage collector. Also note that this is my first "real" node.js project, so I'll be really grateful for any tip.
javascript - 使用when库理解javascript中的promise
我一直在尝试围绕异步编程和 Promise 的使用。为了帮助理解它们,我编写了一些简单的嵌套代码,但遇到了障碍。
这是代码:http ://pastebin.com/hBtk9vER 确保在库时安装(npm install)
我的问题是console.log(string)
未定义,当我期望它"Hello World"
在promiseRead()
解决之后。有趣的是,当我删除超时时,它按预期工作。任何人都可以帮助解释这一点,为什么promise
函数promiseRead()
在超时之前执行它的代码。
非常感激
javascript - Callback pyramid even with When Promise
I have 3 functions that I want to execute one after another, only when the previous function has finished its task. I use When Promise library for this,
Is this how it's supposed to be? I was under the impression I could easily avoid callbacks and its "pyramid of doom" using promises, or am I using them wrong?
javascript - 如何使用 catch 和最后使用 when.map
我想使用该when.map
功能来处理一些数据。处理完数据后,我需要做一些清理工作(例如,将当前使用的数据库连接释放回连接池)。
我使用catch
and的方法的问题finally
是finally
在第一次发生时调用它reject
,而其他映射仍在进行中。
那么我怎样才能等到所有的映射承诺都完成后,才能进行保存清理。
输出
环境信息:
- 当js:v3.1.0
- 节点:v0.10.26
javascript - 我可以解开这种“何时”承诺调用的嵌套吗?
我是when.js
javascript 库的新手,但我熟悉 C# 中的异步编程。这就是为什么我觉得这段代码很笨拙:
我基本上希望按顺序调用三个方法,每个方法的输出都通过管道传送到下一个方法。无论如何我可以将这段代码重构为更“类似序列” - 即摆脱嵌套?我觉得这里的when
-framework 缺少一些东西。我做的不对,对吧?
angularjs - promises not getting resolved while testing directive using jasmine
I am currently testing a custom directive which uses promises.
The structure of the first part of code segment of the directive is as follows:
The jasmine test spec that I wrote has the following structure:
While running this test, control is not getting into this section of the directive code.
[However, the control gets in till the previous line of code.]
A probable reason for this issue could be that the promises are not getting resolved. Also, no error or exception is thrown. Any suggestions in resolving the 'when' promise in the spec - so that the control gets into the following section of the directive: