我有一个这样的字典:{go:['went','run'],love:['passion','like']}键的值是它的同义词。'getSynonymWords(word)'是一个异步函数,它返回一个promise,其中它的值是与传递的参数对应的同义词列表。我怎样才能像这样循环遍历对象以递归地获取另一个对象:{went:[],run:[],passion:[],like:[]}这是我的一段代码:functiongetRelatedWords(dict){returnnewPromise(function(resolve){varnewDict={};for(varkeyindict){i
我有以下代码。它按预期工作,没有抛出未处理的拒绝错误。p=newPromise(fulfill,reject)->rejectnewError'someerror'p.catch(error)->console.logerror现在,第二个代码示例会抛出一个未处理的拒绝错误。当我清楚地处理错误时,有人可以向我解释为什么会发生这种情况。p=newPromise(fulfill,reject)->rejectnewError'someerror'p.then->console.log'ok'p.catch(error)->console.logerror顺便说一句。我在chrome和blu
我有一个函数,如果找到任何内容,它将查找缓存,否则它将继续获取数据并设置缓存。这是非常标准的。我想知道错误是否发生在最内部的函数中,它会一直冒泡到最外层的Promise吗?所以,我可以只用一个catch而不是一个。这是我的代码。我正在使用Bluebirdvar_self=this;returnnewPromise(function(resolve,reject){_self.get(url,redisClient).then(functiongetCacheFunc(cacheResponse){if(cacheResponse){returnresolve(JSON.parse(ca
我有3个NodeJs函数。我想在这里做的是,我想调用normalizeFilePath并获取规范化路径,然后检查该文件是否存在normalizedFilePath最后这些,如果文件不存在则创建一个文件。这是使用promises(Bluebird)的第一天,我是NodeJS和JavaScript的新手。下面的代码结构越来越复杂。当然,这根本不是一个好主意。varcreateProjectFolder=function(projectName){};varcheckFileExistance=function(filePath){returnnewpromise(function(reso
我期待Bluebirdforgottenreturnwarning出现,但由于某种原因它不起作用。Ademo:constBluebird=require('bluebird');Bluebird.config({warnings:true})Bluebird.resolve(1).then(()=>{Bluebird.resolve(2);//shouldwarnaboutforgottenreturn}).then(two=>console.log(two));如何解决输出警告?我怀疑我以前遇到过这个问题,但我不记得解决方案是什么。 最佳答案
所以这是我的设置:varPromise=require("bluebird");varrequest=Promise.promisify(require('request'));这个有效:request('url')它返回一个promise这不是:request.post('url',{form:{type:'artist'}})给我这个错误:TypeError:Objectfunctionpromisified(_arg0,_arg1){...}hasnomethod'post'at/Users/beamer30/projects/wevo/controllers/music.js:
我正在使用bluebird在Node.js中开发一个基于promise的项目,另一个是ES6的原生promise。在这两种情况下,我都有一个链,我在其中以以下形式查询数据库:some_function(/*...*/).then(function(){returnquery("SELECT`whatever`FROM`wherever`")}).then(/*...*/)请注意,query显然会返回已解析为查询结果的promise。这在几个链中重复,我正在寻找一种方法来清理未使用的函数包装器。我自然会使用Function.prototype.apply(),但在这种情况下,当我尝试时:
我正在按照我的方式使用promises,但我受困于我的用例。我有一组转换器函数(每个函数都是一个promise并修改一些JSON结构)。让我展示一些代码。假设这是我的JSON结构(数组)vardata=[{a:1,b:2},{a:3,b:4}];transformFunction是以特定方式修改数据的转换函数的定义。这两个函数将c和d属性添加到上述JSON结构中:vartransformFunctions={//transform1:function(data){//Thisfunctionadds`c`propertytoeachobjectfrom`a`returnnewPromi
我需要实现Promise.all的一个版本,它接受一组promise并像往常一样返回结果,此外还结算所有promise,很像Promise.settle在Bluebird库中执行此操作,但我不能使用Bluebird,并且必须仅依赖于标准promise协议(protocol)。实现起来会不会非常复杂?还是在这里询问如何实现它的想法太多了?我真的希望不会,所以我想问,如果有人以前实现过它,请分享如何正确实现的想法。这样做的前提是能够在调用完成后需要执行commit/rollback的数据库事务中使用它,并且不能松动promises仍在尝试在事务调用之外解决。编辑:提供给另一个问题的链接非常
我正在替换一些使用jQueryDeferred对象的旧代码,我正在使用Bluebird/ES6Promises重写。如果我有多个异步调用,我如何在所有promise都已解决后触发一个函数。使用jQueryDeferreds它会是这样的:varrequests=[...];//somearbitrarydatathatisiteratedtogeneratemultipleajaxrequestsvarpromises=[];resuests.forEach(function(endpoint){promises.push($.ajax({url:endpoint}));});$.whe