草庐IT

mocha-as-promised

全部标签

javascript - 等待 promise 链有什么问题?

我正在开发Angular6应用程序,有人告诉我以下是反模式:awaitsomeFunction().then(result=>{console.log(result);});我意识到等待promise链是没有意义的。如果someFunction()返回一个promise,那么如果你正在等待它,你就不需要一个promise链。你可以这样做:constresult=awaitsomeFunction();console.log(result);但有人告诉我等待promise链会导致错误,或者它会破坏我的代码。如果上面的第一个代码片段与第二个代码片段做同样的事情,那么使用哪个代码片段有什么关

javascript - Node.js - 为什么在使用 mocha 和 zombie 进行测试时会出现泄漏?

我试图让zombie与mocha一起工作,但除非我使用mocha--ignore-leaks命令选项,否则我的测试总是失败并显示错误:Error:globalleaksdetected:k,i,name,chars,char我的测试看起来与该线程中解释的完全一样:MochaandZombieJS我希望我可以在那里发布我的问题,但是作为一个新手,我不能对线程发表评论,只能提出一个新问题。你知道我为什么会出现这些泄漏吗?我正在使用mocha1.0.3和zombie1.0.0。 最佳答案 泄漏可能来自您自己的代码或您使用的node_mod

javascript - 使用嵌套的 Promise 编写干净的代码

我正在编写一个与Apple对话以验证收据的应用程序。他们有一个沙盒和生产url,您可以发布到。与Apple通信时,如果您收到21007状态,这意味着您正在发布到生产url,而您应该发布到沙盒url。所以我写了一些代码来简化重试逻辑。这是我的代码的简化版本:varrequest=require('request'),Q=require('q');varpostToService=function(data,url){vardeferred=Q.defer();varoptions={data:data,url:url};request.post(options,function(err,

Javascript promise 不等待解决

我以为我对promises有很好的理解,直到我遇到了一个问题,下面是一个简化的代码片段。我的印象是console.log调用会输出firstsecondthird,但结果却是secondthirdfirst。谁能解释为什么第二个和第三个promise无需等待第一个就可以继续。varQ=require('q');(function(){varObj=function(){functionfirst(){vardeferred=Q.defer();setTimeout(function(){console.log('inthefirst')deferred.resolve();},200)

javascript - chai 没有在 Karma-mocha 中定义

我正在使用mocha-phantomjs配置成功运行我的测试用例。现在我正在使用Karma启动器运行这些测试。但我遇到了问题Chaiisnotdefined。这是我的配置文件。module.exports=function(config){config.set({client:{mocha:{ui:'tdd'}},basePath:'',frameworks:['mocha'],files:['web/js/*.js','test/lib/*.js','node_modules/chai/chai.js'//addedthisonsuggestionoftheanswerinstack

javascript - 使用依赖注入(inject)和 `done` 编写 Karma + Mocha 测试?

在既有依赖注入(inject)又完成的mocha中编写Karma单元测试的最优雅的方法是什么?依赖注入(inject):describe('cows',function(){it('fartsalot',inject(function(cow){//dostuff}))})完成:describe('cows',function(){it('fartsalot',function(done){//dostuff})})如果我想在我的单元测试中同时使用cow和done怎么办?现在,这就是我正在做的,但并不令人满意。beforeEach(inject(function(cow){this.c

javascript - 在下一个请求之前等待 $http promise

我正在开发一个angularJS应用程序,这是我使用这个框架的第一个网站。在我的应用程序中,我需要在for循环内进行$http调用。在下一次迭代之前的循环中,我想等待上一次调用的响应。什么是最好和最简单的方法来做到这一点。我已经尝试使用回调,$q.all(),.then在所有这些中只有最后一个请求正在通过。请帮忙。注意:我通过$http调用的API无法对请求进行排队。编辑:我已经尝试了以下两种方法,在这两种情况下,只有最后一个请求被成功发出。你能告诉我我在这里做错了什么吗?方法一:varpromiseArray=[];for(vari=0;i方法二:varpromises=[];for

javascript - 是否有针对强类型语言的 promise 规范?

Promises/A+spec非常适合实现promises,但它大量使用了Javascript的弱类型。是否有针对C#等强静态类型语言设计的Promises规范? 最佳答案 许多语言都有promises,它们是并发的有用且基本的构建block。他们中的许多人都将promise作为其基类库的一部分内置。C#的TaskScala的Future[T]Java8CompletableFuture.Python的Future.(虽然不是静态类型)。Haskell的IOa.clojure的promise.达特的Future.C++的std::f

javascript - Angular Run Block - 使用 UI-Router $stateProvider 来解析 Promise

UI-Router不同于Angular的ngRoute。它支持普通ngRoute可以做的所有事情以及许多额外的功能。我正在将我的Angular应用程序从ngRoute更改为UI-Router。但我不太清楚如何以编程方式注入(inject)resolve函数-我在Controller和config之外使用的代码片段。因此,使用标准Angular的ngRoute我可以在Angular运行中动态注入(inject)我的resolvepromiseblock:app.run(function($route){varroute=$route.routes['/'];route.resolve=r

javascript - 为什么 jQuery 的 promise 有一个 done(),而 Mozilla 记录的 Javascript 的 promise 却没有?如果我想在 JS 中有一个 done() 怎么办?

Mozilla的JavaScript文档的Promises(参见APIpage)和jQuery的Promises(参见APIpage)之间有什么区别?Mozilla的promise好像只有2个方法:then和catch。jQuery的promise好像有更多的方法,包括:then、done、fail。(fromhere)为什么Mozilla上的JSAPI没有done()?如果我想在JavaScript中使用done()功能怎么办?我该怎么办? 最佳答案 Mozilla的javascriptpromise基于ES6standard,而