草庐IT

promises

全部标签

javascript - 在数组和对象之间使用逗号运算符的 Promise.all 如何工作?

我遇到过这段代码:constresults=awaitPromise.all([Model1.find({}),Model2.find({})],Model3.find({})),v1=results[0],v2=results[1],v3=results[2]用数组和单个对象调用all()—`Model*是Mongoose模型。这是一个很容易修复的错误,但我想了解它是如何给出结果值的,这些值是:v1持有Model1对应的所有文档v2持有Model2对应的所有文档v3未定义如thisansweronthecommaoperator中所述,我只希望Model3.find({})promi

javascript - 在 promise 中处理错误时返回成功

我有一个处理通过WebAPI执行的HTTP请求的promise:promise=promise.then(r=>{//...},error=>{if(error.status==404){//HereIcanfixanerrorandcontinueproperly}else{//Heretheerrorshouldbepropagatedfurtherinthepromise}}//laterinthecode:promise.catch(r=>{/*Moreerrorhandling*/});在代码的后面,这个promise链接到更多的错误检查。在出现404错误的情况下,我实际上可

javascript - 扩展 `Promise` 并更改 `then` 签名

我想延长Promise并更改then签名所以它的回调接收两个值。我尝试了不同的方法,其中两种已记录并经过测试here.遗憾的是,我遇到了各种错误,或者生成的类的行为不像Promise。方法一:WrappinganativePromiseexportclassMyWrappedPromise{constructor(data){this.data=data;this.promise=newPromise(evaluate.bind(data));}then(callback){this.promise.then(()=>callback(this.data,ADDITIONAL_DATA

javascript - 在 promise 链中访问先前履行的 promise 结果

这个问题在这里已经有了答案:HowdoIaccesspreviouspromiseresultsina.then()chain?(17个答案)关闭7年前。在使用promises编码时,访问promises链中很久以前的数据的正确模式是什么?例如:do_A.then(do_B).then(do_C).then(do_D).then(do_E_WithTheDataComingFrom_A_And_C_OnlyWhen_D_IsSuccesfullyCompleted)我当前的解决方案:通过链传递单个JSON结构,并让每个步骤填充它。对此有何看法?

javascript - 有条件的 promise

在我的脚本中,我需要检索字典以将编码值转换为名称:$.ajax({//retrievedictionary}).done(function(dictionary){//convertencodedvaluesintonames}).done(function(){//runmyapplication});但是,有时字典已经被另一个应用程序加载,在这种情况下我不需要ajax调用:if(dictionary){//convertencodedvaluesintonames//runmyapplication}else{$.ajax({//retrievedictionary}).done(

javascript - promise findOneAsync 变量 = {"isFulfilled":false ,"isRejected":false}?

利用Bluebird来PromisfyMongoose,我有一个Promise.map(带有一系列if/else的函数,用于遍历数组以查看是否存在引用文档,否则创建一个..将findOneAsync的产品分配给一个变量,然后将“variable._id”分配给正在制作的新文档(主要promise),控制台记录{"isFulfilled":false,"isRejected":假的这是一个片段:for(i=0;i这是一个日志:existingItem:{"isFulfilled":false,"isRejected":false}existingItem._id:undefined为什么

javascript - 如何将这个延迟风格的 promise 转换为 ES6 风格的 promise

请参阅新手错误#4:在NolanLawson中使用“延迟”的文章:Wehaveaproblemwithpromises(顺便说一句很棒的帖子!),我尽量不再使用延迟风格的promise。最近我遇到了一个实际的例子,我不知道如何不以延迟的方式编码,所以我需要一些建议。这是一个例子,一个Angular工厂:functionConfirmModal($q,$modal){return{showModal:function_showModal(options){var_modal=$modal(options)vardeferred=$q.defer()_modalScope.confirm=

javascript - 为什么在解析父状态 promise 之前执行子状态解析函数

我正在使用ui-routerv0.2.13。Thispage指出:Allresolvesononestatewillberesolvedbeforemovingontothenextstate,eveniftheyaren'tinjectedintothatchild还有更多Allresolvesforallthestatesbeingenteredaretriggeredandresolvesdbeforethetransitionwillenteranystates(regardlessoftheresolvebeinginjectedsomewhere)但是,在我的例子中,子状态

javascript - 如何重写 forEach 以使用 Promises 停止 "freezing"浏览器?

我有一个函数,看起来像这样。function(){longArray.forEach(element=>doSomethingResourceIntensive(element))}因为数组很长,而且这个函数有点占用资源,所以会卡死浏览器。现在我想用Promises重写它,所以它做同样的事情,只是不卡住浏览器,我希望解决方案优雅且“ES6-y”;理想情况下,该函数将在所有迭代完成后返回Promise。我找到了thisquestion,它使用setTimeout处理,但它似乎有点“非ES6-y”,并且它不返回Promise。我做不到function(){returnPromise.all

javascript - TypeScript promise TS2304 TS2529

我有以下代码:functionasyncFunc1():Promise{returnnewPromise(x=>x);}产生了以下错误:TS2304:cannotfindname'Promise'所以我将其更改为显式声明“Promise”:///import*asPromisefrom'bluebird';functionasyncFunc1():Promise{returnnewPromise(x=>x);}现在我收到以下错误:TS2529:Duplicateidentifier'Promise'.Compilerreservesname'Promise'intoplevelscop