Javascript 将参数传递给Node.js中导入的函数

Javascript 将参数传递给Node.js中导入的函数,javascript,node.js,express,async.js,Javascript,Node.js,Express,Async.js,我觉得这应该不难,但我对Node.js是新手(对JavaScript的许多方面也是新手)。我正在创建一个Express应用程序来返回从多个API获取的自行车位置数组;每个API都需要经度和纬度作为输入。因此,我将每个API调用分解为一个“模块”,并使用npm库“异步”来并行执行每个调用,使用“axios”来执行API请求。我可以让它工作得很好,而不需要将它分解成模块,但是一旦我将每个API调用分离到它自己的文件中,我就不知道如何将lat和lng传递到它 这是我的index.js import a

我觉得这应该不难,但我对Node.js是新手(对JavaScript的许多方面也是新手)。我正在创建一个Express应用程序来返回从多个API获取的自行车位置数组;每个API都需要经度和纬度作为输入。因此,我将每个API调用分解为一个“模块”,并使用npm库“异步”来并行执行每个调用,使用“axios”来执行API请求。我可以让它工作得很好,而不需要将它分解成模块,但是一旦我将每个API调用分离到它自己的文件中,我就不知道如何将lat和lng传递到它

这是我的index.js

import async from 'async';
import {mobike} from './mobike.js';
import {spin} from './spin.js';

async.parallel([
    mobike, //How or where can I pass these parameters?
    spin
],
function(err, results) {
    console.log(results);
});
例如,这里是我的mobike.js模块(为了简洁起见,我将省略spin.js)


当我尝试通过mobike传递参数时(比如
mobike(12341234)
),它不起作用。如何将lat和lng参数传递给mobike.js文件?

对于并行方法,每个函数只有一个回调参数

实现你想要的最简单的方法就是这样

async.parallel([
    function (callback) {
        var lng = 0.0
        var lat = 0.0
        mobike(lat, lng, callback), //This is where you pass in parameters
    },
    spin
],
function(err, results) {
    console.log(results);
});
从中,似乎需要将
mobike
spin
函数包装到其他函数中,以便与
async
模块提供的回调函数一起绑定数据。大概是这样的:

var lat = 35.2286324;
var lng = -80.8427562;

async.parallel([
    function(callback) { mobike(lat, lng, callback); },
    function(callback) { spin(lat, lng, callback); },
],
function(err, results) {
    console.log(results);
});

也可以使用绑定来传递参数。例如:

const async = require('async')

const sleep = (ms = 0) => {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async.parallel([
    mobike.bind(null, 1000), //How or where can I pass these parameters?
    spin.bind(null, 500)
],
function(err, results) {
    console.log(results);
})

async function mobike (ms) {
  await sleep(ms) // pretend to wait for an api request
  console.log('mobike waited for ' + ms + ' ms')
  return ms
}

async function spin (ms) {
  await sleep(ms) // pretend to wait for an api request
  console.log('spin waited for ' + ms + ' ms')
  return ms
}
结果:

spin waited for 500 ms
mobike waited for 1000 ms
[ 1000, 500 ]

我将Aldo的回答标记为正确,因为这是第一个回答,但感谢您的回答(同样有效),您还可以将
异步
函数转换为返回
承诺
,并使用
承诺。所有
函数的所有输出都能获得相同的结果。感谢@BrijeshPatel…如果我这样做,我不再需要
async.js
依赖项,对吗?
spin waited for 500 ms
mobike waited for 1000 ms
[ 1000, 500 ]