以同步方式执行异步进程| Node.js |谷歌地图

时间:2016-07-26 06:00:08

标签: node.js firebase

此问题与之前在异步流程上发布的问题不同。我正在使用类似uber的应用程序,我使用firebase作为后端。我做了一个服务器来处理一些任务,比如将命令分配给驱动程序。当订单出现时,我需要使用google maps api查找所有驱动程序和客户之间的距离。下面是给出的功能,我用它来计算司机和客户之间的距离。

btn-success

在下面给出了客户和出租车司机之间距离的流程。

1)一旦订单出现在数据库中,它就会被提取到服务器中并保存在一个地图中,该地图包含作为客户ID的密钥和作为客户提供纬度和经度的对象的值。

2)还有一个地图包含作为驱动程序ID的密钥和作为包含驱动程序纬度和经度的对象的值。

3)客户与所有驱动程序的距离是使用上面给出的函数计算的,一个距离最小的驱动程序会收到通知。

问题:

我想要的是,一旦订单出现,在for循环中我添加" calculateDistance(fromLat,fromLong,toLat,to Long)"具有toLat和toLong的队列中的函数具有驱动程序的纬度和经度,而fromLat和fromLong具有客户的纬度和经度。在for循环之后,我执行所有回调,一旦完成所有这些回调,就会调用函数x(),并将所有这些回调的distance durationObject返回给函数x();

TL; DR基本上我只想将所有异步函数的数据在完成执行后放入一个函数中。

2 个答案:

答案 0 :(得分:1)

您正在寻找Promise.all

答案 1 :(得分:1)

您可以使用async库来实现您的需求。该库具有广泛的功能,可用于同步任务。例如,async.waterfallasync.series可以在此处完成工作。 您可以在回调函数中使用它们以获得同步行为。

相关问题