问题标签 [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.

0 投票
1 回答
967 浏览

jquery - 有什么方法可以在循环中使用 jQuery 的 deferred / promise / when / then 功能进行多个 ajax 调用?

我一直在阅读更新的 jQuery 特性///如何Deferred用于简化对多个异步事件promise(例如 AJAX 查询)的操作whenthen

但是我一直在阅读的所有示例都讨论了一组预先知道的查询。

(借用编码怪胎的回答here

如果您事先不知道它们,例如在循环中使用不同的参数调用相同的分页 Web API,例如 MediaWiki 和 StackExchange API 的某些功能 - 有什么办法可以利用这些较新的 jQuery在这种情况下的功能还是我们必须回到旧的方式?

0 投票
1 回答
2610 浏览

node.js - 什么是everyauth 承诺?

我不明白everyauth 的承诺是什么。

我看到我需要返回一个承诺对象或用户,但什么是everyauth 承诺?

0 投票
6 回答
77417 浏览

node.js - 如何使用猫鼬 Promise - mongo

有人可以给我一个关于如何将 Promise 与猫鼬一起使用的示例。这是我所拥有的,但它没有按预期工作:

然后在 myLib 中,我会有这样的东西:

在某些时候,我希望我的数据会出现,但我怎样才能访问它,或者得到它?

0 投票
3 回答
8028 浏览

javascript - 如果库正在吞噬所有异常,我该如何调试我的异步、基于 Promise 的代码?

问题

JSFiddle:http: //jsfiddle.net/missingno/Gz8Pe/2/

我有一些看起来像这样的代码:

问题是,当我在 IE 上时,我只能看到'obj' is null or not an object错误,没有任何对相应行号的引用,也没有调试器在有问题的行处停止(就像我希望的那样)。

这类问题使代码难以调试,而我现在能想到的唯一解决方案(弄乱控制流库或使用调试器或 console.log 进行逐步调试)是我宁可不用做。

我认为正在发生的事情

为了允许在触发链后添加 errbacks,then将抢先捕获回调抛出的任何异常。我认为这是 IE 调试器没有停止错误或显示带有行号的通常错误消息的原因。

没有行号的错误消息来自控制流库:它提供了一个deferredOnError挂钩,每当捕获到异常并保存以供以后使用时都会调用该挂钩,默认行为是 console.error-ing 错误对象:

可悲的是,我无法找到从 IE 中的错误对象获取行号或堆栈跟踪的方法,并且该挂钩的调用方式不允许我重新抛出异常并让它冒泡到顶层。

我想要的是

我希望有一种更好的方法来调试异步代码,然后一步一步地与调试器一起进行。在最好的情况下,一种让调试器在异常上停止的方法(就像它在未处理的异常上所做的那样),或者至少是一种从抛出的 Error 对象中获取行号或堆栈跟踪的方法。

0 投票
2 回答
2811 浏览

javascript - jQuery Deferred 对象,按顺序调用函数

我对如何使用 jQuery 的 Deferred 对象感到困惑,而且我看到的示例对我没有帮助。我想要做的是 1.)通过 ajax 调用获取日历对象,2.)用日历数据填充我的全局对象(MYOBJ)的一部分,然后 3.)用 MYOBJ 中的新数据填充页面元素. 这三个函数实现了逻辑,我想依次调用它们:

不过,我不知道如何让 populateCalendar() 等到 loadCalendarData() 完成。这...

...显然是不正确的-这只是我扔在墙上的一种变体,因为我不明白自己在做什么... :)

更新: 正如 GoldenNewby 和 Brian ONeil 正确指出的那样,我可以在 loadCalendarData 结束时继续调用 populateCalendar。那肯定会奏效。我希望我在发帖时就想到了这一点。我想我的最终目标是弄清楚如何实现排序。但是,在这种情况下,我想不出任何场景会调用 loadCalendarData 而不直接调用 populateCalendar,所以这个解决方案绝对是有意义的。谢谢。

0 投票
2 回答
1156 浏览

multithreading - Clojure - 构建直播服务器的方式 - 有承诺,但它是正确的方式

我正在寻找构建实时流媒体服务器的 clojure 方式。我正在努力解决的特定问题是如何将值从单个提供者(网络摄像头)发送到未定义数量的线程(连接的客户端)。显然,当客户端连接时,它对来自网络摄像头的完整视频文件不感兴趣,基本上它需要发送一个标头,然后在那个确切时刻从网络摄像头到达任何包。

在直接的java中,我认为这很容易。每当客户端连接时,将连接添加到阵列,当它断开连接时,从阵列中删除连接,并且每当来自网络摄像头的新包到达时,将其发送到阵列中的每个条目。锁定数组,以便我们添加/删除条目,或者循环通过它来发送数据包。当然,我们可以在 clojure 中构建相同的内容,但这听起来很邪恶。

在消息传递多线程架构中,这听起来同样容易。

在 clojure 中我能想到的唯一解决方案是使用一系列惰性的 promise。确实它有效,但我想知道是否有另一种方法可以导致更清洁的代码和更多的 clojure-zen :)

只是为了说明:一个简化的问题,带有承诺和原子:

一个提供程序函数生成数据,一个线程读取该数据。后来创建了一些其他线程,它们想从第一个线程获取数据,但无法获取。

所以,基本上问题是:这是解决这个问题的正确方法吗?

还有,我们这里说的是流媒体服务器,所以provider函数每秒会提供几万条,可能有10个客户端连接。承诺系统是否意味着如此大量的使用?

0 投票
4 回答
12014 浏览

javascript - 取消 jQuery 中的延迟承诺

如何在不从 DOM 中删除元素的情况下取消承诺?

小提琴

我运行了这段代码:

在这之后,有没有办法取消承诺?两者都clearQueue()不起作用stop(true),因为这不是我要取消的动画。我看到remove()应该这样做......但我只想停止承诺,而不是删除整个元素。

0 投票
2 回答
1432 浏览

node.js - Everyauth 并从 findUserById 中访问 (twitter) oauth 数据

我正在尝试使用everyauthinsideexpress向允许向图像添加文本评论的网站验证用户身份。我目前正在使用 twitter oauth api 来验证我的用户。

现在我正在尝试建立一个自定义用户数据库,它允许我保持多种登录方式连接到 CouchDB 中的单个条目。当我想在他最初通过 twitter 连接时将新用户添加到数据库时,我遇到了麻烦。我的代码findUserById如下:

findById并且是查询数据库的对象saveById的方法,看起来是由everyauth提供的。cradleuserId

我的问题在于{"name":"test"}部分。这是我想将数据从req.session.auth.twitter对象添加到数据库的位置。如何从findUserById函数内访问这些值?

这甚至可能吗?有不同的方法吗?我正在查看 findOrCreateUser 函数,但我不知道如何在不使我的应用程序崩溃的情况下更改它 - 我还没有掌握 Promise 的概念。

0 投票
2 回答
2884 浏览

javascript - javascript 中如何实现异步编程(承诺)?javascript 不是 ui 线程环境吗?

JS 中的 Promise 允许你进行异步编程,如下所示:

每当我编写前面的代码时,它会在到达DoSomethingElse()之前到达success。这怎么可能?JS 不是单线程环境(不包括 web-workers)吗?完成了setTimeout吗?

0 投票
2 回答
1259 浏览

scala - “一无所有”的承诺永远不会完成?

我想知道为什么当我将“_”作为完成结果传递时,“无”的承诺永远不会完成。当我想使用 Promise 来表示某事已经完成时,我遇到了这个问题:

现在我使用的是 Promise of Unit,它工作得很好,而且也更清晰一些。但我仍然想知道上面的哪个代码以超时/未完成的 Promise 结束。

我用 Akka 2.0 final 运行了这个。