草庐IT

promises

全部标签

javascript - promise 链中 promise 之间的延迟

假设我正在使用以下代码连续运行几个promise:letparamerterArr=['a','b','c','d','e','f']parameterArr.reduce(function(promise,item){returnpromise.then(function(result){returnmySpecialFunction(item);})},Promise.resolve())代码只是简单地调用mySpecialFunction(它返回一个promise),等待promise得到解决,然后再次调用mySpecialFunction等等。因此该函数以正确的顺序为数组中的每

javascript - 在 Jest 中测试 Promises 的最佳方式

除非我误解了什么,解决和拒绝(https://facebook.github.io/jest/docs/expect.html#resolves)将在vNext之前可用。现在/同时使用Jest测试promise的推荐方法是什么?是否只是将期望放在thens和catches中?例如:describe('Fetching',()=>{constfilters={startDate:'2015-09-01'};constapi=newTestApiTransport();it('shouldrejectifnostartdateisgiven',()=>{MyService.fetch().

javascript - Sequelize : how to get results from each promise 中的 promise

在Sequelize中>=1.7wecanusepromises你能为我解释一下如何在这段代码中从每个用户那里获取值吗:varUser=sequelize.define("user",{username:Sequelize.STRING})User.sync({force:true}).then(function(){returnUser.create({username:'John'})}).then(function(john){returnUser.create({username:'Jane'})}).then(function(jane){returnUser.create(

javascript - 是否可以为每个 promise 使用带有 then() 的 axios.all?

我有一个React组件,它触发一个事件来获取数据。这导致动态数量的存储过程调用来获取数据,并且来自每个调用的数据存储在完全不同的位置。然后我需要在接收到所有数据并可用后重新渲染。我在axios中使用promises。由于axios调用的数量是动态的,我正在构建一个数组并将其插入到axios.all中如下:letpromises=[];for(leti=0;i问题是每个axios请求返回的数据都被添加到完全不同位置的对象中。因为我无法将它们全部放在一个正确的位置then(我怎么知道哪个响应在哪个位置?),我尝试做这样的事情:letpromises=[];for(leti=0;i{myOb

JavaScript Promise then() 排序

我还在学习JavaScriptPromise,我遇到了一个我不明白的行为。varo=$("#output");varw=function(s){o.append(s+"");}varp=Promise.resolve().then(function(){w(0);}).then(function(){w(1);});p.then(function(){w(2);returnnewPromise(function(r){w(3);r();}).then(function(){w(4);});}).then(function(){w(5);});p.then(function(){w(6)

javascript - 同步 promise 解析(bluebird vs. jQuery)

我为DynamicsCRMREST/ODATAwebservice开发了一个小库(CrmRestKit)。该库依赖于jQuery并使用promise-pattern,分别是jQuery的promise-like-pattern。现在我想将这个库移植到bluebird并删除jQuery依赖项。但是我遇到了一个问题,因为bluebird不支持promise-objects的同步解析。一些上下文信息:CrmRestKit的API除了一个可选参数外,该参数定义了网络服务调用应该以同步还是异步模式执行:CrmRestKit.Create('Account',{Name:"foobar"},fal

javascript - await 的异步映射函数返回 Promise 而不是值

我有这个代码asyncfunctionaddFiles(dir,tree){return(awaitreadDir(dir)).map(async(name)=>{awaitreadDir(dir);returnname;})}但不幸的是,它只返回一堆promise,因为map中的异步函数没有被等待。我想知道是否有任何方法可以等待上面代码中的映射函数。 最佳答案 尝试asyncfunctionaddFiles(dir,tree){constfiles=awaitreadDir(dir)awaitPromise.all(files.m

javascript - 异步函数与返回 New Promise

更新我已经阅读了十几篇关于这个主题的文章,但没有一篇涉及这个基本问题。我将在本文末尾开始列出资源部分。原帖我对async函数的理解是它返回一个promise。MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function在我的程序中我可以这样写:functiontestPromise(){returnnewPromise((resolve,reject)=>{//DOWORKreject()//IFWORKFAILSresolve()//IFWORKISS

javascript - AngularJS - 使用 $routeProvider :resolve 拒绝了 $http promise

我正在尝试在$routeProvider中使用resolve以仅在$http请求完成时显示新路由。如果请求成功,则$http.post()产生的promise将得到解决并呈现View。但是,如果请求失败(例如超时或内部错误),则promise永远不会得到解决,并且永远不会呈现View。如何使用resolve处理请求失败?代码中最重要的部分如下:应用程序.js$routeProvider.when('/warrantyResult',{templateUrl:'partials/warranty-result.html',controller:'WarrantyResultCtrl',r

javascript - 用于顺序执行同步和异步函数的 jQuery Deferred 和 Promise

如果我想让同步和异步函数以特定顺序执行,我可以使用jQuerypromise,但它似乎并没有像我期望的那样工作。当调用deferred.resolve()时,函数a、b和c应该按该顺序执行我希望函数b被执行,但所有函数都会立即执行决议被称为。代码如下:functiona(){vardeferred=$.Deferred();setTimeout(function(){console.log("statusina:",deferred.state());//thisshouldtriggercallingaornot?deferred.resolve("froma");},200);co