jjzjj

waterfall

全部标签

javascript - 如何避免回调 "waterfall"?

除了相对琐碎的功能之外,我倾向于害怕为任何东西编写Javascript的原因之一是我从来没有找到一种合适的方法来避免当一件事真正依赖于另一件事时的回调瀑布。有这样的方法吗?我现在正在开发Titanium应用程序并遇到了这个真实世界的场景:我有一组设施,我需要计算与用户当前位置的距离。这需要获取用户的当前位置(只需要发生一次),并且在遍历设施位置时获取每个位置的位置并计算距离。检索位置(经/纬度)的API是异步的,因此“简单”方法如下所示(伪代码如下):foreachfacility{API.getCurrentLocation(function(location){//async,ta

javascript - 嵌套在 async.js waterfall 中的异步函数

免责声明:非工程师,对JS非常陌生大家好-我正在尝试利用async.js模块将一组函数链接在一起。我想要的输出是遍历mapData(对象数组),然后再将其传递给最终函数(现在-只是console.log(result)。async.waterfall([function(callback){getCoords(function(data){mapData=data;});callback(null,mapData);},function(mapData,callback){//getEmail(mapData);callback(null,mapData);}],function(er

javascript - 无极 waterfall

这个问题在这里已经有了答案:HowtostructurenestedPromises(3个答案)关闭6年前。我是一名API开发人员,通常编写需要将结果从一个异步调用传递到另一个异步调用(也称为异步waterfall)的端点。我通常使用promises以下列方式执行此操作:task1().then(result1){task2(result1).then(result2){task3(result2).then(result3){//APIresponse}).catch(function(err){//Task3handleerr})}).catch(function(err){//T

javascript - 了解Node.JS使用async.waterfall如何执行外部功能

我需要使用async.js模块执行异步功能。但是当我执行外部功能时,我遇到了一些问题。该代码通过得很好。但是当我将全局变量更改为局部变量时,无法使用参数进行设置。varasync=require('async');varogs=require('open-graph-scraper');//globalvariablesvarparam1={url:'http://www.google.com/'};varparam2={url:'https://www.yahoo.com/'};functionfunction1(callback){ogs(param1,function(error

javascript - 带有 if 条件和条件函数列表的 nodejs 和 async.waterfall。

我一直在使用async.waterfall和nodejs。它工作得很好,但现在我有一个关于流程的问题。我想在async.waterfall流程中使用一个简单的if条件。async.waterfall([callOne,callTwo,if(condition>0){callTest1,callTest2,}else{callTest3,callTest4,}callThree,callFour,callFive,],function(err,result){if(err){returnres.status(400).jsonp({error:err});}});我只想测试一个条件..如

javascript - async.waterfall 的简单实现是什么?

我正在使用asynclibrary中的一些函数,并想确保我了解他们在内部是如何做事的;但是,我一直停留在async.waterfall(implementationhere)上。实际实现使用库中的其他函数,没有太多经验,我发现很难理解。有人可以在不担心优化的情况下提供非常简单实现waterfall功能的实现吗?可能类似于thisanswer.来自thedocs,waterfall的描述:Runsthetasksarrayoffunctionsinseries,eachpassingtheirresultstothenextinthearray.However,ifanyofthetas

javascript - 像异步 waterfall 一样执行 forEach

我正在尝试通过Node.js脚本使用GoogleAPI从地址列表中检索经度和纬度。调用本身工作正常,但因为我有大约100个地址要提交。我在数组上使用async.forEach,但调用速度太快,我收到错误消息“您已超出此API的速率限制。”我发现调用次数限制为每24小时2500次,每秒最多10次。虽然我可以接受每天2500次,但我的通话速度对于速率限制来说太快了。我现在必须编写一个函数来延迟调用,以免达到限制。这是我的代码示例:async.forEach(final_json,function(item,callback){varpath='/maps/api/geocode/json?

javascript - 循环遍历任务 waterfall - promises bluebird

我希望使用bluebird循环执行一些任务,只是将超时用作实验机制。[不打算使用异步或任何其他库]varPromise=require('bluebird');varfileA={1:'one',2:'two',3:'three',4:'four',5:'five'};functioncalculate(key){returnnewPromise(function(resolve,reject){setTimeout(function(){resolve(fileA[key]);},500);});}Promise.map(Object.keys(fileA),function(key

javascript - 在 node.js 中使用异步 waterfall 时的 "err"参数

我正在尝试执行一系列函数,每个函数都将回调传递给下一个。现在它看起来像这样(请原谅任何小错误,我在发布时重写它!):functionfunc1(callback){callback(null,"stuff");}functionfunc2(input,callback){callback(null,"foo"+input);}async.waterfall([func1,func2],function(err,result){sys.puts(result);});我的第一个问题是我不确定如何优雅地启动这个函数,因为它不能接受输入。我最终会将该函数包装在本地函数中,但这仍然让我有些不安

javascript - 处理相互依赖和/或分层的异步调用

举个例子,假设我想从某处获取文件列表,然后加载这些文件的内容,最后将它们显示给用户。在同步模型中,它将是这样的(伪代码):varfile_list=fetchFiles(source);if(!file_list){display('failedtofetchlist');}else{for(fileinfile_list){//iteration,notenumerationvardata=loadFile(file);if(!data){display('failedtoload:'+file);}else{display(data);}}}这为用户提供了不错的反馈,如果我认为有必