在javascript中导出默认值
问题描述:
我正在通过教程介绍如何使用express和mongoose创建一个restful api。在javascript中导出默认值
我理解一切,除了此位就在这里
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)部分。
这是一个内置函数还是以某种方式调用自己?
答
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.
});
希望这个例子清楚地说明了这个概念。
答
这是一个单箭头PARAM功能,在MDN
// Parentheses are optional when there's only one parameter:
(singleParam) => { statements }
singleParam => { statements }
答
该代码使用箭头函数。因此,它是与此相同:
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)
希望它更清晰现在一个参数叫回来。
答
callback
被假定为函数定义。正如你在你的例子中,它是以db
作为它的参数被调用的。
回调主要用于异步操作,即使db
尚未准备好,程序仍会继续执行。这被称为“non-blocking”执行。这样,当db
数据可用时,它将传递到callback
并执行。
希望这会有所帮助!
'callback'是被导出的匿名函数的第一个也是唯一的参数的名称。该参数预计是一个函数,它在'callback(db)'处被调用;' – 4castle
Ooooh,好的!这样做更有意义。谢谢! –