草庐IT

promises

全部标签

javascript - 为什么来自 Promise `.then` 方法的回调是一种反模式

我在StackOverflow上看到了人们建议为AngularJS服务提供回调函数的答案。app.controller('tokenCtrl',function($scope,tokenService){tokenService.getTokens(functioncallbackFn(tokens){$scope.tokens=tokens;});});app.factory('tokenService',function($http){vargetTokens=function(callbackFn){$http.get('/api/tokens').then(functionon

javascript Promise.all 只返回最后一个 promise

我有一个这样的脚本:vara=[{'a':1},{'b':2}]varallPromises=newArray(a.length)for(variina){allPromises[i]=Promise.resolve().then(response=>{console.log(i)console.log(a[i])//Dosomethigoneveryloopwithkeyandvaluereturni})}Promise.all(allPromises).then(response=>console.log(response))在我的for循环中,它只给我最后一个索引和最后一个索引的

javascript - 在 promise 解决后修改组件状态

我想在promise解决后修改组件的状态(reactnative)。这是我的代码:classGreetingextendsComponent{constructor(props){super(props);this.state={text:'Starting...'};varhandler=newRequestHandler();handler.login('email','password').then(function(resp){this.setState({text:resp});});}render(){return(Resp:{this.state.text});}}但是当

javascript - Promise.all() 使用 Backbone 解决 IE 11

背景:我的任务是帮助解决出现以下错误的问题:'Promise'isundefined'这是我们的sessionsmodel.js脚本的一部分:returnPromise.all(promises);promises是一组需要发生的操作,如果有任何失败,它将被拒绝。问题:根据我的研究,IE不支持Promise那么是否有解决方法可以应用于此返回值来完成同样的事情? 最佳答案 由于您使用的是Backbone,所以promise可能是jQuerypromise。你可以使用jQuery.whenfunction与Promise.all相同:r

javascript - 如何在没有 "indentation pyramids"的情况下正确表达任意 Promise 链?

这个问题在这里已经有了答案:HowdoIaccesspreviouspromiseresultsina.then()chain?(17个答案)关闭5年前。Q.reduce和Q.all等方法有助于在异类promise集合的特定情况下扁平化promise链。不过,请注意一般情况:constF=(x)=>x;consta=F(1);constb=F(2);constc=F(a+b);constd=F(a+c);conste=F(b+c);console.log(e);也就是说,一系列赋值,每个术语都依赖于先前定义的任意术语。假设F是一个异步调用:constF=(x)=>Q.delay(100

javascript - Node.js Q promise ,可以使用 this() 为什么要使用 defer()?

我想做这样的事情:somePromiseFunc(value1).then(function(value2,callback){//insertthenextthen()intothisfunction:funcWithCallback(callback);}).then(function(dronesYouAreLookingFor){//Haveaparty}).done();它没有用。我无法让它工作。我被建议为此目的使用defer()。他们的owndocs说我们应该将deferreds用于回调式函数。虽然这令人困惑,因为他们著名的压平金字塔示例都是关于回调的,但是这个示例太抽象了

javascript - Bluebird promise 多个参数

我是Promises的新手,不知道如何解决这个问题:我正在做一个身份验证系统,我的第一个电话是检查数据库中的电子邮件。如果用户存在,则根据bcrypted密码检查密码...我将此库用于bcrypt:https://npmjs.org/package/bcrypt这与promises不兼容,所以我对以下签名使用“promisify”:compare(password,crypted_pa​​ssword,callback)。所以这是我的代码:varcompare=Promise.promisify(bcrypt.compare);User.findByEmail(email).then(

javascript - 循环使用本地 promise ;

我正在尝试使用nativeES6promises进行异步循环它有点有效,但不正确。我想我在某个地方犯了一个大错误,我需要有人告诉我它在哪里以及如何正确完成vari=0;//createssampleresolverfunctionpayloadGenerator(){returnfunction(resolve){setTimeout(function(){i++;resolve();},300)}}//createsresolverthatfulfillsthepromiseifconditionisfalse,otherwiserejectsthepromise.//Usedonl

javascript - 使用 Promises 使用 JavaScript 加载 jQuery

ApreviousquestionrevealedhowtoloadinjQueryusingnativeJavaScript.我已经成功地使用了那里的答案中的回调代码,复制在这里://Anonymous"self-invoking"function(function(){//Loadthescriptvarscript=document.createElement("SCRIPT");script.src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';script.type='text/javas

javascript - 如果 then 处理程序不返回任何内容,链式 Promise 的解析值是多少?

如果then处理程序没有return语句,则生成的链式promise在bluebird中采用值undefined。但是我看不到它在Promises/A+或任何地方指定的任何地方?可以指望这种行为吗?这是一个测试程序:varPromise=require('bluebird');varp=Promise.resolve('test');p.then(function(s){console.log('s1='+s);//noreturn}).then(function(s){//bluebirdprints"undefined".isthisspecifiedbyastandard?con