草庐IT

request-promise

全部标签

javascript - Bluebird promise 链 : 'Catch' with Result

为了让这个问题对尽可能多的人有用,除了我在下面使用Node+Express的Bluebirdpromise库这一事实之外,我将排除我的具体实现细节。所以,假设我有以下链(其中P返回一个promise,res是ExpressHTTP响应对象):P().then(function(){//donothingifallwentwell(fornow)//weonlycareifthereisanerror}).catch(function(error){res.status(500).send("Anerroroccurred");}).then(function(){returnP();}

javascript - 迭代 Promise 迭代器的非递归方法

我开发了一个客户端库,它公开了一个名为iterator()的方法。此方法返回使用require('promise')库创建的Promise实例,该实例由迭代器对象完成。此对象包含一个名为next()的方法,该方法返回一个Promise,该Promise由一个复杂的对象完成,如下所示:{done:[true|false],key:_,value:_}虽然iterator()可能会预取一些元素,但next()需要返回一个Promise,以防它导致远程调用。现在,假设用户想要迭代所有元素,直到next()返回的Promise返回一个包含done:true的对象。我已经设法使用以下递归方法实现

javascript - 限制正在运行的 promise 的并发

我正在寻找一个promise函数包装器,它可以在给定的promise运行时限制/节流,以便在给定的时间只运行一定数量的promise。在下面的例子中,delayPromise永远不会同时运行,它们应该以先到先得的顺序一次运行一个。importPromisefrom'bluebird'function_delayPromise(seconds,str){console.log(str)returnPromise.delay(seconds)}letdelayPromise=limitConcurrency(_delayPromise,1)asyncfunctiona(){awaitdel

javascript promise 递归

我有一个异步递归函数,如果还有更多工作要做,它会返回promise,否则返回结果数组。如果不涉及递归,它会正确返回数组,但是当存在递归时,数组是未定义的。代码是functionfoo(filepath){varresultArr=[];functiondoo(file){returnasyncOperation(file).then(resp=>{resultArr.push(resp.data);if(resp.pages){varpages=resp.pages.split(',');pages.forEach(page=>{returndoo(page);});}else{ret

javascript promises、事件循环和作业队列

考虑以下代码:functionfoo(){console.log('foo');newPromise(function(resolve,reject){setTimeout(function(){resolve('RESOLVING');},5000);}).then(function(value){console.log(value);});}foo();我试图正确理解这里发生的事情:在执行newPromise时,“executerfunction”直接运行,当setTimeout被调用时,安排一个操作将新条目添加到“事件队列”(5秒后)因为调用then一个添加到“作业队列”的操作,

javascript - 使用 Promises 处理分支

我有一个关于jQuery1.9.1promises的问题,我可能需要条件逻辑来返回另一个deferred而我不确定如何处理它。这是我最好的尝试,但正如下面的评论所示,当我点击else分支时,我仍然点击了第二个.then()函数,我希望我可以在那里返回给用户。如何处理这种情况的任何模式?storage.provision(c).then(function(rc){if(rc===0){storage.write(c);}else{returnoptions.onSuccess(rc);//howigotbacktotheuserscallbacks/promise,butthis//ta

javascript - 排队 promise

我使用mbostock/queue用于排队一些异步操作。更多的是速率限制(UI生成的事件很少,后端可以慢慢处理),并确保它们按顺序处理。我像这样使用它functionrequest(d,cb){//someasyncoperadd.then(function(){cb(null,"finished")})}varaddQ=queue(1);addQ.defer(request)//calledbyfewreqathigherratesgeneratedbyUI我已经使用angular.js$q进行异步操作。那么,我是必须使用mbostock/queue,还是可以用$q构建一个队列(本质

javascript - Bluebird.js 自定义错误捕获功能,不适用于第一个 promise ?

我正在尝试使用Bluebird.js的自定义错误处理程序。在下面的示例中调用了包罗万象的处理程序,而不是MyCustomError处理程序,但是当我将拒绝移动到then函数(并解决了firstPromise...)时,MyCustomError处理程序叫做。这是为什么?有什么问题吗?谢谢。varPromise=require('bluebird'),debug=require('debug')('main');firstPromise().then(function(value){debug(value);}).catch(MyCustomError,function(err){deb

javascript - "The property or field ' 尝试通过 JavaScript 访问 SharePoint 中库的 GUID 时 ID ' has not been initialized. It has not been requested..."

我正在尝试使用SharePoint2013中的客户端对象模型访问库的ID。但出现错误:Thepropertyorfield'Id'hasnotbeeninitialized.Ithasnotbeenrequestedortherequesthasnotbeenexecuted.Itmayneedtobeexplicitlyrequested.下面是我的代码:varcontext=SP.ClientContext.get_current();varweb=context.get_web();varitems=SP.ListOperation.Selection.getSelectedIt

javascript - 使用 Chai 解决 Protractor 和 Cucumber 中的 promise

最近,我和一位同事对使用Protractor和Chai实现Cucumber步骤定义的“正确”方式存在一些分歧。我们的争论源于对Cucumber上下文中promise解决方案的确切情况的相互缺乏理解。我们正在针对AngularJS应用程序进行测试,因此解决promise和异步行为是不可避免的。我们遇到的最大问题是强制执行同步测试行为并让Cucumber在步骤定义之间等待promise。在某些情况下,我们观察到这样的情况,即Cucumber似乎在Webdriver执行步骤定义之前就直接完成了步骤定义。我们对这个问题的解决方案各不相同......考虑假设场景:Scenario:Whenaus