草庐IT

promise-then

全部标签

javascript - task.js 生成器/ promise 与异步回调

我想知道在处理JavaScript中的异步代码时,这两种方法中哪种方法更好。我想了解哪种方法可以生成更清晰的代码。我习惯于使用promises,它们似乎比异步方法(https://github.com/caolan/async)更灵活。我也知道Task.js库(http://taskjs.org/),但这依赖于作为EcmascriptHarmony一部分的yield关键字。 最佳答案 async库封装了几个非常常见的异步模式,包括并行进行任意异步调用和异步迭代列表。它旨在与“nodeback”(err,res)API一起使用,这使得

javascript - JS Promises/A+ 的 'catch' 方法名称是否无效,因为它是 JS 关键字?

最近开始在一个项目中使用JSPromises。我注意到每次我使用.catch我的JSlinter提示。它确实运行并做了它应该做的事情,但我查找了ECMAScriptspec它看起来真的是对的:因为catchisakeyword它不能用作标识符。据我了解,方法名称是标识符,因此这是无效的:Promise.reject("Duh").catch(alert);应该是这样的:Promise.reject("Duh")['catch'](alert);我错过了什么? 最佳答案 WhatamImissing?属性名称不是标识符,它可以使用任何

javascript - 我可以触发并忘记 nodejs (ES7) 中的 promise 吗?

我想用babel运行这段代码:redisClientAsync.delAsync('key');returnawaitsomeOtherAsyncFunction();在第一行没有await的异步函数中。这样可以吗?我还能如何运行我不关心的东西?我可以在没有回调的情况下触发非promise函数del('key',null)吗? 最佳答案 是的,你可以这样做,它会并行运行两个异步函数。您刚刚创建了一个promise并将其丢弃。但是,这意味着当promise被拒绝时,您不会注意到。你只会getanunhandledRejectionev

javascript - RxJS:连接三个 promise ,区分结果

我有三个promise,Rest请求返回数据列表。第三个有对前两个列表的引用(ids),所以我想在我拥有所有数据时将这些ids映射到相应的名称。映射不是问题,我只是为此使用了Lodash。但问题是在开始计算此映射之前等待三个promise解决。我想到了使用concat():Rx.Observable.concat(p1,p2,p3).subscribe(functiononNext(list){//Assignthelisttothecorrespondingvariableinthescope},functiononError(e){//Notifyoferror},function

javascript - 为什么仅调用同步函数时 javascript promises 是异步的?

在测试中,我发现JavaScriptPromises总是是异步的,无论它们的链中是否包含任何异步函数。这里是一些代码,显示了控制台中的操作顺序。如果你运行它,你会看到即使每个函数都是同步的,输出显示两个aPromise()调用是并行运行的,并且“令人惊讶的是,这是在运行2完成后发生的”不在运行2完成之前发生。functionaPromise(){returnnewPromise(function(resolve,reject){console.log("makingpromiseA")resolve(bPromise());console.log("promiseAresolved")

javascript - 如何使用 EmberData 在 EmberJS 中返回由嵌套模型组成的 promise ?

环境#Ember:1.4.0#EmberData:1.0.0-beta.7+canary.b45e23ba型号我已经简化了我的用例,使问题更容易理解和回答。假设我们有3个模型:Country,Region和Area:Country:-id:DS.attr('number')-name:DS.attr('string')-regions:DS.hasMany('region')Region:-id:DS.attr('number')-name:DS.attr('string')-country:DS.belongsTo('country')-areas:DS.hasMany('area'

javascript - 单元测试 angularjs $q.all - promise 永远不会完成

我正在尝试测试我使用Angular的$q构建的服务promise的实现。我按照promise使用了Karma、Mocha、Chai、Sinon、SinonChai和Chai的组合。我编写并返回promise的所有测试都通过了,但拒绝或使用$q.all([...])的测试。我已经尝试了所有我能想到的方法,但我似乎无法找到问题所在。以下是我正在测试的精简版:"usestrict";describe("Promise",function(){var$rootScope,$scope,$q;beforeEach(angular.mock.inject(function(_$rootScope_

javascript - 在 promise 中打开窗口

我们正在使用promise库Q,但遇到以下问题。window.open()isblockedbybrowserwheniscalledfrompromise我们尝试在promise机制启动之前打开窗口,这是有效的,但问题是当打开新选项卡(并获得焦点)时,所有浏览器资源都引用新选项卡,逻辑是仍然在第一个选项卡中完成,这会导致性能不佳。还有其他方法可以在promise完成时使用事件处理此事件,然后捕获此事件并打开新窗口。更新“所有浏览器资源都指向新标签页”是什么意思我们发现了有趣的行为:)当用户单击按钮时,我们正在运行应用程序,在这种情况下,我们打开新选项卡并将焦点更改为新选项卡,我们正在

javascript - Promise.all 返回一个未定义的数组

我在返回未定义数组的函数时遇到问题。代码如下:classMethods.getQueries=function(models,dbId,dateStart,dateEnd){returnnewPromise(function(resolve,reject){/*Fetchdatabase....*/.then(extractQueries,reject).then(sortQueries,reject).then(onlyTen,reject).then(addText,reject).then(function(queries){console.log('getQueriesfini

javascript - ES6 Promise.all() 错误句柄 - 是否需要 .settle()?

这个问题在这里已经有了答案:Waituntilallpromisescompleteevenifsomerejected(20个回答)6年前关闭。假设我有一个处理两个promise的Promise.all()。如果一个promise产生错误,但另一个promise解决了,我希望能够在Promise.all()解决后根据情况处理错误。ES6Promises缺少解决方法,我假设是有充分理由的。但我不禁认为.settle()方法会让我更容易解决这个问题。我是以错误的方式解决这个问题,还是用一种解决方法扩展ES6Promise是正确的做法?我如何考虑使用.settle()的一个例子:Promi