草庐IT

javascript - 在不使用 async/await 的情况下按顺序执行 promise 数组

假设我有一系列promise。我的数组中的每个元素都是一个knex.js查询生成器,并准备好执行并返回一个promise。如何按顺序运行此数组的每个元素。该数组是动态构建的。letpromisesArray=[q1,q2,q3];每个q本身不是一个promise,但它会在执行时返回一个promise。 最佳答案 这里可能是一个可能的选择:letp=Promise.resolve([]);promisesArray.forEach(q=>{p=p.then(responses=>{//basedonthenatureofeachq,t

javascript - 我的 promise 不再适用于 jQuery 1.8

此代码片段在1.7.2中适用于成功/错误回调以及promise样式回调。在1.8.2中,成功/错误回调仍然有效,但promise无效。我的预感是returndfd.promise(jqXHR);行是问题所在,但我不确定。$.ajaxPrefilter(function(options,originalOptions,jqXHR){//Don'tinfinitelyrecurseoriginalOptions._retry=isNaN(originalOptions._retry)?Common.auth.maxExpiredAuthorizationRetries:originalOp

javascript - 在 Jscript 中为 Q.all() 构建动态函数数组

我正在尝试将可变数量的函数传递给Q.all()如果我手动对数组进行编码,它会工作正常-但是我想在一个循环中构建它,因为系统在运行时之前不知道调用该函数多少次-并且需要为每个AJAX传递一个不同的ID打电话。我尝试了各种方法都没有成功(例如array[i]=function(){func})——我想eval()可能是最后一个度假村。任何帮助都会非常有帮助。//Obviouslythisarrayloopwontworkasitjustexecutesthefunctionsintheloop//buttheideaistobuildupanarrayoffunctionstopassin

javascript - AngularJS/Karma - 测试函数返回已解决或拒绝的 promise

尝试在Karma中使用AngularMock进行单元测试,如果我的函数返回了一个被拒绝的promise,但似乎无法在这件事上找到任何令人惊讶的东西。我有一个像UserService这样的服务,它有一个函数:processIdentityResponse,它根据内部逻辑返回一个被解决或被拒绝的promise:processIdentityResponse:function(response){vardeferred=$q.defer();if(response.data.banned){deferred.reject(response);}else{deferred.resolve(re

javascript - $http promise 链以错误的顺序运行

我是angularjs的新手。我的目标很简单。我想进行ajax调用以获取数据,完成后,我想进行第二次调用以获取依赖于第一组信息的另一组数据。我正在尝试利用promise机制来做到这一点,这样我就可以利用链接而不是嵌套的ajax调用,并更好地保留拥有独立功能的能力,我可以根据需要将它们结合在一起。我的代码类似于以下内容:varpromiseGetWorkTypes=function($q,$scope,$http){ console.log("promiseGetWorkTypes"); return$q(function(resolve,reject){ $http({ meth

javascript - $q.reject 和处理 AngularJS 链式 promise 中的错误

我无法理解使用链接promise进行错误处理的基本概念。为了学习规则,我写了一个简单的例子,猜猜结果会是什么。但不幸的是,它的行为并不像我想象的那样。我已经阅读了多篇关于该主题的文章,但由于我的英语水平很差,我可能无法获得详细信息。无论如何,这是我的代码:varpromiseStart=$q.when("start");varpromise1=promiseStart.then(function(){returnServiceforpromise1.get();});varpromise2=promise1.then(function(data1){returnServiceforpr

javascript - 如何在 JavaScript es6 中代理 Promise

我正在尝试在nativeFirefox中代理Promise(并使用Babel)。varprom=newPromise(function(resolve,reject){resolve(42)});varpromProxy=newProxy(prom,{});promProxy.then(function(response){console.log(response)});这不起作用,我收到“TypeError:‘then’调用了一个未实现接口(interface)Promise的对象。” 最佳答案 你需要有你的处理程序impleme

javascript - 循环内的 promise

在下面的代码中,我有一个无限循环,我不知道为什么会这样。我最好的猜测是因为里面的函数是async循环不会等待它,所以循环永远不会停止。解决此问题的最佳方法是什么?vargenerateToken=function(userId){returnnewPromise(function(resolve,reject){User.findOne({userId:userId},function(err,user){if(user!==null){varloop=true;while(loop){vartoken=Common.randomGenerator(20);(function(e){U

javascript - es6 promise swallow 类型错误

我希望浏览器在发生类型错误时显示错误消息。错误如无法读取未定义的属性或undefinedreference。newPromise(function(resolve,reject){//dostuff...reject('somethinglogicaliswrong');}).catch(e=>console.error(e));newPromise(function(resolve,reject){//dostuff,andasyntaxerror:/vara={};a.something.otherthing=1;/*wehaveanerrorhere*///...}).catch

javascript - promise : is . done() 总是执行,即使 .catch() 是?

我的Promise问题我是Promises的新手,我一直在阅读QDocumentation,它说:Whenyougettotheendofachainofpromises,youshouldeitherreturnthelastpromiseorendthechain.我在我的代码中以Q.Promise方式定义了一个Promise,使用以下console.log来注销执行跟踪:functionfoo(){returnQ.Promise(function(resolve,reject){doSomething().then(function(){console.log('1');retu