问题标签 [q]

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

node.js - 猫鼬和 q 承诺

我在这里使用 mongoose/q promises 框架示例,但在尝试使用 findOne 时似乎 nfbind 存在一些问题,主要是因为来自Q框架的示例似乎与要点中的示例不匹配。

我的代码:

如果我打电话user.findOne({username:'test'}).then(function(err, user) { ... },用户总是未定义的。如果我删除导出并使用带有回调的非承诺版本,我会得到用户。我错过了一些特殊的魔法,但是在查看了代码实现、来自 Q github 的示例和来自 mongoose 演示的示例之后......没有什么真正跳出来的。关于如何findOne与 Q 合作的任何想法?

我也尝试nfbind在源代码而不是模块中设置功能,但无济于事。

0 投票
2 回答
848 浏览

javascript - Q.js 进度处理程序似乎没有触发

我目前正在使用 Q.js 作为 Promise,因为它们实现了进度处理程序。然而,他们似乎并没有开火。我究竟做错了什么?它看起来很基本,所以我一定遗漏了一些东西。(下面的例子是用coffeescript写的)

0 投票
1 回答
1109 浏览

node.js - node.js Q 承诺库 - 如何使用适当的参数列表从 ninvoke 回调

如果我只传回去arg1result就会arg1。如果我传回多个参数,result将是一个参数数组。有没有办法让 Q 回调将我的每个参数作为单独的参数应用于函数,而不是捆绑到数组中并作为单个参数传回?我希望能够使用命名参数,而不必筛选任意元素的数组。

实际上,我希望能够做到这一点:

0 投票
2 回答
3506 浏览

jquery - 是否有一个简单的 jQuery 函数来固定和取消固定 h1 标签?

我知道scrolleramasuperscrollerama

我和他们两个都挣扎了几天。而且我不能让它们仅用于固定。我不需要动画和类型支持。我尝试使用示例文档并一次删除一个块元素的 HTML 内容,然后分页符。似乎 scrollerama 仅在存在整个示例时才有效。或者更有可能......我不够聪明,无法弄清楚。

我要做的就是固定一个<h1></h1>标签,然后在到达特定标签时取消固定它。

我在这里也看到了这个问题:CSS Trouble with Pinned Header Div但这似乎根本不起作用。

示例代码:

某个地方的一些 jquery 函数示例的链接将非常有帮助。或者快速解释如何将 scrollerama 剥离为仅 pin/upin 功能会有所帮助。

额外的:

sbeliv01 提出了这个问题:How to find the most recent element to the current position with jQuery

但是,当调整边距时该方法会失败(为 HTML5 重置)。它仅在元素上绝对没有边距调整时才有效。当试图简单地将 H1 标签包装在无样式的 div 中时,页面滚动时会出现可怕的闪烁。

这是非功能性的,但我已经设置了一个
jsFiddle 以根据需要使用:
FIDDLE HERE
正如您所看到的那样,事情固定得很好,但后来他们无法取消固定。

0 投票
2 回答
10649 浏览

javascript - 使用 node.js + Q deferred/promises 模块从同步回调中​​创建一个同步循环

流行的 JavaScript 模块Q实现了延迟/承诺/期货概念。我认为它主要与 node.js 一起使用,但它也支持浏览器使用。我将它与 node.js 一起使用。

要进行顺序调用,您将一个承诺链接到下一个使用then(),但在一个循环中,它可能非常违反直觉,我发现很难像这个伪代码一样做同样的事情:

Q 文档包含一个看起来非常相似的示例:

但是在尝试多种方法来使这个例子适应我的问题时,我根本没有成功。

与示例代码不同,我不是遍历数组而是希望循环直到满足结束条件。我也总是调用相同的函数。我的函数不会将先前的结果作为下一次调用的参数。每个调用都没有参数,但返回值决定是否继续循环。

这些看似微不足道的差异,却造成了某种难以逾越的心理障碍。现在我明白为什么很多人难以理解承诺了。

0 投票
2 回答
607 浏览

file-upload - 如何使用主干更新文件上传消息?

我正在使用 javascript 上传多个文件。

上传文件后,我需要运行几个处理函数。

由于需要处理时间,我需要在前面有一个 UI,告诉用户整个过程的估计剩余时间。

基本上我有3个功能:

  1. /upload - 这是上传文件的端点
  2. /generate/metadata - 这是应该在 /upload 之后触发的下一个端点
  3. /process - 这是最后一个端点。应该在 /generate/metadata 之后触发

这就是我期望屏幕基本上看起来的样子。

在此处输入图像描述

应显示剩余百分比和剩余时间等信息。

但是,我不确定是否允许服务器提供信息,或者我只使用 javascript 进行粗略估计。

我还需要更新屏幕,比如告诉用户消息,例如

“正在上传”

如果我在功能 1。

“生成元数据”,如果我在功能 2。

“处理中......”如果我在功能 3。

功能 2 仅在功能 1 成功完成后发生。

功能 3 仅在 2 成功完成后发生。

我已经在使用 q.js 承诺来处理其中的某些部分,但是代码变得非常混乱。

我最近遇到了 Backbone,它允许以结构化的方式来处理我想要的单页应用程序行为。

对于端点的成功或失败,服务器端返回 json 响应没有任何问题。

我想知道使用 Backbone.js 实现此功能的好方法是什么

0 投票
1 回答
2859 浏览

node.js - Promise 与 q 框架和 Node.js 中的回调模式?

如果你用 Node.js 编程几天,即使有据可查的q 框架也很难理解。但我喜欢学习它!

read1和等价read2的吗?每次函数的最后一个参数接受回调样式时,read3我可以使用吗?Q.nfbindfunction (err, value)

0 投票
1 回答
1415 浏览

node.js - node.js 用 Q 处理异常

我已经使用 node 几个月了。对于异步代码中的错误处理,我一直在遵循我所知道的最佳实践,即通过回调错误参数处理错误,并让大多数异常冒泡并使应用程序崩溃,因为实际上并没有一种干净地恢复的方法。

我现在正在与使用Q的开发人员一起开发一个项目,他正在使用 Q.nfbind 使用包装器调用我的一些基于回调的函数。但是,这让我对错误处理感到头疼。例如,假设我有一个可以回调错误的函数:

使用 QI 然后可以调用 qDoSomething 并处理错误 ok:

现在假设我一晚工作得太晚,并在查询之前在我的 doSomething() 函数中签入了这样的代码:

在我的 Q 之前的世界里,这会很糟糕。将引发异常,这将导致应用程序崩溃,并且它将永远重启。但是,一旦应用程序重新启动,它至少可以正常工作,直到再次点击此代码路径。但是,使用 Q,这个异常现在被失败处理程序捕获和处理。此处理程序无法修复损坏,因为它对连接池一无所知。现在,每次命中此代码路径时,都会从池中泄漏一个连接,最终应用程序被阻塞。这个错误的影响从坏到可怕。

我不知道 Q 有什么方法可以区分最初抛出的错误和通过回调错误产生的错误。似乎我被困在处理所有事情或什么都不处理。任何人都可以建议一种从可怕到糟糕的方法吗?

0 投票
2 回答
7970 浏览

javascript - 使用递归承诺停止内存泄漏

如何Promise使用Q 库创建 JavaScript 的递归链?以下代码无法在 Chrome 中完成:

0 投票
1 回答
318 浏览

asynchronous - 如何在拒绝时简单地更改 q.js-promise 'errormessage'?

我正在使用Q.js进行承诺。

我想知道当 Q-promise 失败时是否可以快速格式化/更改错误消息。

考虑一个人为的例子:

当然,我可以执行以下操作,但感觉有点麻烦:

无论如何要更优雅地做到这一点?