jjzjj

Promises

全部标签

javascript - 将 co 库与 promises 一起使用而不是与 thunks 一起使用有什么好处?

所以我一直在阅读有关co的用法的信息库,我在大多数博客文章中看到的一般设计模式是包装在thunk中具有回调的函数。然后使用es6生成器将这些thunk生成到co对象。像这样:co(function*(){vara=yieldread(‘Readme.md’);varb=yieldread(‘package.json’);console.log(a);console.log(b);});functionread(path){returnfunction(done){fs.readFile(path,‘utf8',done);}}我可以理解,因为它带来了promise的所有好处,例如更好的

javascript - 使用 Promises 通过 Bluebird promises 库在另一个函数中调用函数

我有3个NodeJs函数。我想在这里做的是,我想调用normalizeFilePath并获取规范化路径,然后检查该文件是否存在normalizedFilePath最后这些,如果文件不存在则创建一个文件。这是使用promises(Bluebird)的第一天,我是NodeJS和JavaScript的新手。下面的代码结构越来越复杂。当然,这根本不是一个好主意。varcreateProjectFolder=function(projectName){};varcheckFileExistance=function(filePath){returnnewpromise(function(reso

javascript - jQuery promise 是否符合 Promises/A+

我已阅读thisarticle这是基于著名的DomenicDenicola'sarticle.第一个说:TheproblemwithjQuery’simplementation(upuntilversion1.9)isthatitdoesn’trespectthesecondpartofthespecification,“Thisfunctionshouldreturnanewpromise…”,thatis“then”doesn’treturnanewpromiseobjectwhenexecutingoneofthehandlers(eitherthefullfillment,th

javascript - 函数适用于 Promises

我正在使用bluebird在Node.js中开发一个基于promise的项目,另一个是ES6的原生promise。在这两种情况下,我都有一个链,我在其中以以下形式查询数据库:some_function(/*...*/).then(function(){returnquery("SELECT`whatever`FROM`wherever`")}).then(/*...*/)请注意,query显然会返回已解析为查询结果的promise。这在几个链中重复,我正在寻找一种方法来清理未使用的函数包装器。我自然会使用Function.prototype.apply(),但在这种情况下,当我尝试时:

Javascript Promises : Chain same promise n times, 然后做其他事情

我有一个返回promise的函数,它执行一些异步操作,我们称它为functionToRepeat()。我正在尝试编写函数repeatFunction(amount),这样它将启动promise,等待完成,再次启动,等待完成,等等给定的次数.这个repeatFunction(amount)也应该是thenable,这样我就可以在它执行后链接其他东西。这是我的尝试:functionfunctionToRepeat(){letaction=newPromise(function(resolve,reject){setTimeout(function(){console.log("resolv

javascript - ES6 Promise 等待 K out N promises to resolve

varp1=newPromise((resolve,reject)=>{setTimeout(resolve,1000,'one');});varp2=newPromise((resolve,reject)=>{setTimeout(resolve,2000,'two');});varp3=newPromise((resolve,reject)=>{setTimeout(resolve,3000,'three');});Promise.all([p1,p2,p3]).then(values=>{console.log(values);},reason=>{console.log(rea

javascript - jQuery Deferred/Promise 设计模式和用例

我的问题很笼统,可以在SO上找到一些相关问题,但这些都不是我要找的。我一直在阅读/玩弄jQueryDeferredobject我看到它在库本身内部被大量使用来处理ajax请求和动画等。我了解一般功能,并认为它已被证明在某些情况下非常有用。jQuery库使用这个概念非常优雅地解决了一些问题。现在我的问题是:我认为概述不同的问题/解决方案场景会非常有用,这些场景可以使用Deferred对象优雅而稳健地解决。在哪些情况下需要使用jQueryDeferred的解决方案?javascript软件设计中的哪些一般模式可以区分,可以使用jQuery延迟功能最优雅地解决?我打算本着每个OO分析师都知道

javascript - 如何在解决所有 javascript ES6 Promises 后运行

我正在替换一些使用jQueryDeferred对象的旧代码,我正在使用Bluebird/ES6Promises重写。如果我有多个异步调用,我如何在所有promise都已解决后触发一个函数。使用jQueryDeferreds它会是这样的:varrequests=[...];//somearbitrarydatathatisiteratedtogeneratemultipleajaxrequestsvarpromises=[];resuests.forEach(function(endpoint){promises.push($.ajax({url:endpoint}));});$.whe

javascript - jQuery Deferred/Promises 动态数组未按正确顺序执行回调

感谢您深入了解我在这里的误解。我的要求如下:我有一个URL数组。我想同时为每个URL发出AJAX请求,并在第一个请求完成后立即调用第一个回调。然后,如果第二个请求完成,则调用该回调,依此类推。选项1:for(vari=0;i显然这行不通,因为无法保证响应将按正确顺序完成。选项2:varpromises=[];for(vari=0;i这应该可行,但缺点是它会等到所有AJAX请求完成后,才会触发任何回调。理想情况下,我应该能够在第一个回调完成后立即调用它,然后链接第二个回调以在收到该响应时执行(或者如果它已经解析则立即执行),然后是第三个,依此类推。数组长度是完全可变的,并且可以在任何给定

javascript - ES6 类中的 Promises

这个问题在这里已经有了答案:JavaScript"this"referenceswrongobject[duplicate](3个答案)关闭6年前。我正在尝试编写一个具有返回promise和promise链的方法的类。此尝试从do_that()返回错误我理解使用“this”的问题,这就是为什么我使用self=thiskludge,但我仍然遇到错误。TypeError:Cannotreadproperty'name'ofundefined.除了这个问题,我该如何解决这个问题,有没有更简洁的方法来做到这一点?varPromise=require('bluebird');classmyCla