这个javascript es6胖箭头函数的db参数的值或用法是什么?

时间:2017-11-17 05:30:32

标签: javascript node.js database ecmascript-6

initializeDb( db => {

    // internal middleware
    app.use(middleware({ config, db }));

    // api router
    app.use('/api', api({ config, db }));

    app.server.listen(process.env.PORT || config.port, () => {
        console.log(`Started on port ${app.server.address().port}`);
    });
});

https://github.com/developit/express-es6-rest-api/blob/master/src/index.js#L27

以上情况,db似乎突然冒出来,要查看上下文,请点击链接直接到源代码。

我在此处模拟了相同的方式(https://codepen.io/adamchenwei/pen/vWWmXadb甚至无法访问。那个db究竟在那个特定的样板中做了什么?

2 个答案:

答案 0 :(得分:2)

dbinitializeDb

的回调函数的参数

代码实际上看起来像这样

'use strict';

initializeDb(function (db) {

    // internal middleware
    app.use(middleware({ config: config, db: db }));

    // api router
    app.use('/api', api({ config: config, db: db }));

    app.server.listen(process.env.PORT || config.port, function () {
        console.log('Started on port ' + app.server.address().port);
    });
});

答案 1 :(得分:1)

  

以上情况,数据库似乎无处不在

它是您传递给initializeDb的函数的参数。 initializeDb presumable创建一个新的数据库实例,并将该实例传递给您传递给它的函数。

这就是函数的工作原理,它们接受在调用时提供的参数。仅在您的示例中,调用该函数的不是另一个函数(initializeDb)。

采用回调的函数的简化示例:



function answerToEverything(callback) {
  callback(42);
}

answerToEverything(answer => console.log(answer));