jjzjj

Promises

全部标签

javascript - 实现 Promise.all

这个问题在这里已经有了答案:JavaScriptclosureinsideloops–simplepracticalexample(44个答案)关闭6年前。exercises之一在EloquentJavascript这本书的第17章是实现Promise.all()方法,我想出了这个实现(不起作用):functionall(promises){returnnewPromise(function(success,fail){varsuccessArr=newArray(promises.length);if(promises.length==0)success(successArr);va

javascript - 链式 jQuery promises with abort

我目前正在编写API代码,其中包含多层深度的$.ajax()调用。一个要求是用户必须能够取消任何请求(例如,如果它花费的时间太长)。通常这是通过一些简单的事情来完成的,比如:varjqXHR=$.ajax(..);$(mycancelitem).click(function(){jqXHR.abort();});但是我的代码看起来更像这样:functionmyapicall(){varjqxhr=$.ajax(…);varprms=def.then(function(result){//modifytheresultherereturnresult+5;});returnprms;}这

javascript - 为什么 JavaScript 的 `Promise.all` 没有在失败条件下运行所有​​ promise ?

根据MDN:Ifanyofthepassedinpromisesrejects,theallPromiseimmediatelyrejectswiththevalueofthepromisethatrejected,discardingalltheotherpromiseswhetherornottheyhaveresolved.ES6spec似乎证实了这一点。我的问题是:为什么Promise.all会在其中任何一个拒绝时丢弃promises,因为我希望它等待“所有”promises结算,并且“丢弃”到底是什么意思?(很难说出“丢弃”对于进行中的promises和可能尚未运行的prom

javascript - 多个 AngularJS 获取请求到一个模型中

有没有办法通过AngularJS中的get()函数调用未知数量的API调用并将它们全部添加到模型中($scope多变的)。到目前为止,我所做的如下:if(theUIDS!=""){varmyDropbox=[];for(i=0;i我检查是否有任何UID,并为每个UID创建一个temp对象,其中填充了一个uid,然后是一个accountInfo对象,然后是files对象。设置完temp对象后,我将其推送到myDropbox数组中。循环完成后,我将dropboxAccounts模型设置为$scope中的myDropbox变量。我是Angular的新手,但我很确定这至少是正确的想法。幸运的是

javascript - 我可以用 bluebird Promises 提前打破链条吗?

我不一定想出错,但我有:getFromDb().then(tradeData)->ifnottradeData#DONOTCONTINUETHECHAINelsegetLatestPricetradeData.then(latestPrice)->....then->....then->....catch(err)->nexterr如果没有tradeData,我有什么方法可以中止链条? 最佳答案 虽然是一个公认的答案,但我想告诉所有的谷歌人,“break()”函数已更改为“cancel()”像这样使用:p=getFromDb().t

javascript - 循环遍历任务 waterfall - promises bluebird

我希望使用bluebird循环执行一些任务,只是将超时用作实验机制。[不打算使用异步或任何其他库]varPromise=require('bluebird');varfileA={1:'one',2:'two',3:'three',4:'four',5:'five'};functioncalculate(key){returnnewPromise(function(resolve,reject){setTimeout(function(){resolve(fileA[key]);},500);});}Promise.map(Object.keys(fileA),function(key

javascript - 如何使用 Bluebird Promises 进行分页?

我有类似的东西newPromise(resolve,reject)->trader.getTradeslimit,skip,(err,trades)->returnrejecterriferrresolvetrades.each(trade)->doStufftradelimit设置为某个任意数字,比如10并且skip从0开始。我想不断增加skip直到没有更多的trades。doStuff是我用来处理每笔交易的函数。这是第一次成功,但我想以分页方式获得更多交易。具体来说,我想以更高的skip运行trader.getTrades直到trades.length为0

javascript - Bluebird promises - 如何分解一个数组,然后映射它?

如果我有一个数组:['one.html','two.html','three.html']我如何分解该数组,对其应用一连串的promise,然后将其重新组合在一起?目前我的代码是这样的:Promise.map(['one','two','three'],function(i){dbQuery('SELECT'+i);}).then(function(results){//ThishasanarrayofDBqueryresults});我在想像这样的事情:Promise.map(['one','two','three'],function(i){dbQuery('SELECT'+i);

javascript - JavaScript : How to get resolve value for all promises? 中的 Promise.all

我编写了以下node.js文件:varcsv=require('csv-parser');varfs=require('fs')varPromise=require('bluebird');varfilename="devices.csv";vardevices;Promise.all(read_csv_file("devices.csv"),read_csv_file("bugs.csv")).then(function(result){console.log(result);});functionread_csv_file(filename){returnnewPromise(fu

javascript - 支持事件的图像预加载器javascript

我正在尝试查找图像预加载器脚本。虽然我找到了一些,但它们都不支持预加载完成时触发的事件。有谁知道可以执行此操作的任何脚本或jQuery插件吗?希望这个问题适用于stackoverflow-如果不适用,请随时将其删除。 最佳答案 这是一个函数,它将从数组中预加载图像并在最后一个完成时调用您的回调:functionpreloadImages(srcs,imgs,callback){varimg;varremaining=srcs.length;for(vari=0;i由于我们现在处于使用promises进行异步操作的时代,这里有一个使用