问题标签 [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.
node.js - 猫鼬和 q 承诺
我在这里使用 mongoose/q promises 框架示例,但在尝试使用 findOne 时似乎 nfbind 存在一些问题,主要是因为来自Q框架的示例似乎与要点中的示例不匹配。
我的代码:
如果我打电话user.findOne({username:'test'}).then(function(err, user) { ... }
,用户总是未定义的。如果我删除导出并使用带有回调的非承诺版本,我会得到用户。我错过了一些特殊的魔法,但是在查看了代码实现、来自 Q github 的示例和来自 mongoose 演示的示例之后......没有什么真正跳出来的。关于如何findOne
与 Q 合作的任何想法?
我也尝试nfbind
在源代码而不是模块中设置功能,但无济于事。
javascript - Q.js 进度处理程序似乎没有触发
我目前正在使用 Q.js 作为 Promise,因为它们实现了进度处理程序。然而,他们似乎并没有开火。我究竟做错了什么?它看起来很基本,所以我一定遗漏了一些东西。(下面的例子是用coffeescript写的)
node.js - node.js Q 承诺库 - 如何使用适当的参数列表从 ninvoke 回调
如果我只传回去arg1
,result
就会arg1
。如果我传回多个参数,result
将是一个参数数组。有没有办法让 Q 回调将我的每个参数作为单独的参数应用于函数,而不是捆绑到数组中并作为单个参数传回?我希望能够使用命名参数,而不必筛选任意元素的数组。
实际上,我希望能够做到这一点:
jquery - 是否有一个简单的 jQuery 函数来固定和取消固定 h1 标签?
我知道scrollerama和superscrollerama。
我和他们两个都挣扎了几天。而且我不能让它们仅用于固定。我不需要动画和类型支持。我尝试使用示例文档并一次删除一个块元素的 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
正如您所看到的那样,事情固定得很好,但后来他们无法取消固定。
javascript - 使用 node.js + Q deferred/promises 模块从同步回调中创建一个同步循环
流行的 JavaScript 模块Q实现了延迟/承诺/期货概念。我认为它主要与 node.js 一起使用,但它也支持浏览器使用。我将它与 node.js 一起使用。
要进行顺序调用,您将一个承诺链接到下一个使用then()
,但在一个循环中,它可能非常违反直觉,我发现很难像这个伪代码一样做同样的事情:
Q 文档包含一个看起来非常相似的示例:
但是在尝试多种方法来使这个例子适应我的问题时,我根本没有成功。
与示例代码不同,我不是遍历数组而是希望循环直到满足结束条件。我也总是调用相同的函数。我的函数不会将先前的结果作为下一次调用的参数。每个调用都没有参数,但返回值决定是否继续循环。
这些看似微不足道的差异,却造成了某种难以逾越的心理障碍。现在我明白为什么很多人难以理解承诺了。
file-upload - 如何使用主干更新文件上传消息?
我正在使用 javascript 上传多个文件。
上传文件后,我需要运行几个处理函数。
由于需要处理时间,我需要在前面有一个 UI,告诉用户整个过程的估计剩余时间。
基本上我有3个功能:
- /upload - 这是上传文件的端点
- /generate/metadata - 这是应该在 /upload 之后触发的下一个端点
- /process - 这是最后一个端点。应该在 /generate/metadata 之后触发
这就是我期望屏幕基本上看起来的样子。
应显示剩余百分比和剩余时间等信息。
但是,我不确定是否允许服务器提供信息,或者我只使用 javascript 进行粗略估计。
我还需要更新屏幕,比如告诉用户消息,例如
“正在上传”
如果我在功能 1。
“生成元数据”,如果我在功能 2。
“处理中......”如果我在功能 3。
功能 2 仅在功能 1 成功完成后发生。
功能 3 仅在 2 成功完成后发生。
我已经在使用 q.js 承诺来处理其中的某些部分,但是代码变得非常混乱。
我最近遇到了 Backbone,它允许以结构化的方式来处理我想要的单页应用程序行为。
对于端点的成功或失败,服务器端返回 json 响应没有任何问题。
我想知道使用 Backbone.js 实现此功能的好方法是什么
node.js - Promise 与 q 框架和 Node.js 中的回调模式?
如果你用 Node.js 编程几天,即使有据可查的q 框架也很难理解。但我喜欢学习它!
是read1
和等价read2
的吗?每次函数的最后一个参数接受回调样式时,read3
我可以使用吗?Q.nfbind
function (err, value)
node.js - node.js 用 Q 处理异常
我已经使用 node 几个月了。对于异步代码中的错误处理,我一直在遵循我所知道的最佳实践,即通过回调错误参数处理错误,并让大多数异常冒泡并使应用程序崩溃,因为实际上并没有一种干净地恢复的方法。
我现在正在与使用Q的开发人员一起开发一个项目,他正在使用 Q.nfbind 使用包装器调用我的一些基于回调的函数。但是,这让我对错误处理感到头疼。例如,假设我有一个可以回调错误的函数:
使用 QI 然后可以调用 qDoSomething 并处理错误 ok:
现在假设我一晚工作得太晚,并在查询之前在我的 doSomething() 函数中签入了这样的代码:
在我的 Q 之前的世界里,这会很糟糕。将引发异常,这将导致应用程序崩溃,并且它将永远重启。但是,一旦应用程序重新启动,它至少可以正常工作,直到再次点击此代码路径。但是,使用 Q,这个异常现在被失败处理程序捕获和处理。此处理程序无法修复损坏,因为它对连接池一无所知。现在,每次命中此代码路径时,都会从池中泄漏一个连接,最终应用程序被阻塞。这个错误的影响从坏到可怕。
我不知道 Q 有什么方法可以区分最初抛出的错误和通过回调错误产生的错误。似乎我被困在处理所有事情或什么都不处理。任何人都可以建议一种从可怕到糟糕的方法吗?
javascript - 使用递归承诺停止内存泄漏
如何Promise
使用Q 库创建 JavaScript 的递归链?以下代码无法在 Chrome 中完成:
asynchronous - 如何在拒绝时简单地更改 q.js-promise 'errormessage'?
我正在使用Q.js进行承诺。
我想知道当 Q-promise 失败时是否可以快速格式化/更改错误消息。
考虑一个人为的例子:
当然,我可以执行以下操作,但感觉有点麻烦:
无论如何要更优雅地做到这一点?