我正在编写一个关于如何使用express和mongoose创建restful api的教程。
我正在理解除了这一点之外的一切
import mongoose from 'mongoose';
import config from './config';
export default callback => {
// connect to the database
let db = mongoose.connect(config.mongoUrl);
// callback db
callback(db);
}

我明白它的目的是什么以及如何称呼它。 令我困惑的是回调(db)部分。
这是内置函数还是以某种方式调用自身?
答案 0 :(得分:2)
这是一个单一的参数箭头函数,请查看其对mdn的描述
// Parentheses are optional when there's only one parameter:
(singleParam) => { statements }
singleParam => { statements }
答案 1 :(得分:2)
该代码使用箭头功能。所以它与此相同:
import mongoose from 'mongoose';
import config from './config';
export default function(callback) {
// connect to the database
let db = mongoose.connect(config.mongoUrl);
// callback db
callback(db);
}
所以这个函数被一些其他模块使用回调函数作为参数回调,该参数是用callback(db)
运行的
希望现在更清楚了。
答案 2 :(得分:1)
callback
不是函数的名称。 export default
正在导出一个匿名箭头函数,该函数将callback
作为参数。因为它只有一个参数,所以它们不需要包含在parens中,因为它是有效的JavaScript。传入函数时,它将异步调用它,返回传递给回调函数的数据。为了说明,请考虑以下示例。
import mongoose from 'mongoose';
import config from './config';
export default callback => {
// connect to the database
setTimeout( function () {
let db = mongoose.connect(config.mongoUrl);
callback(db);
}, 1000); // simulate latency
}
然后,当您将文件导入其他地方时:
import db from './db';
db( database => {
// One second later, this function would be called.
// Do something with the database here.
});
希望这个例子清楚地说明了这个概念。
答案 3 :(得分:1)
callback
被假定为函数定义。正如您在示例中所述,它以db
为参数调用。
回调主要用于异步操作,即使db
尚未就绪,程序仍继续执行。这被称为" non-blocking"执行。这样,当db
数据可用时,它会传递给callback
并执行。
希望这有帮助!