Javascript中的回调机制
我试图理解javascript(typescript)中的回调机制。如果我有一个需要回调作为输入参数的函数,我是否必须显式地使用return语句将其与调用代码中的实际回调实现连接起来,或者我们可以在被调用的代码中使用“callback”引用,它会自动与调用代码中的回调代码连接起来 代码示例(TypeScript)Javascript中的回调机制,javascript,typescript,callback,return,Javascript,Typescript,Callback,Return,我试图理解javascript(typescript)中的回调机制。如果我有一个需要回调作为输入参数的函数,我是否必须显式地使用return语句将其与调用代码中的实际回调实现连接起来,或者我们可以在被调用的代码中使用“callback”引用,它会自动与调用代码中的回调代码连接起来 代码示例(TypeScript) 你不需要返回,你可以简单地这样称呼它 clear(collectionName: string, callback: any) { this.getConnection
你不需要返回,你可以简单地这样称呼它
clear(collectionName: string, callback: any) {
this.getConnection((err, db) => {
if (!db)
callback(err, null);
db.collection(collectionName).remove();
});
return callback();
}
// callback code being hooked up using reference to reserved callback keyword for automatic hook up with calling code
clear(collectionName: string, callback: any) {
this.getConnection((err, db) => {
if (!db)
callback(err, null);
db.collection(collectionName).remove({}, callback);
});
}
不,函数在Javascript中是一流的公民,因此您可以将它们作为普通变量使用,并将它们传递给所有人。您只需要在适当的时候调用它们(作为正常函数)。不需要返回语句。例如,看看
Array.prototype.forEach
如何在引擎盖下工作。它接受回调作为参数,将当前迭代的元素作为第一个参数,将当前索引作为第二个参数:
Array.prototype.forEach = function(callback) {
for(i = 0; i < this.length; i++) {
if (callback) callback(this[i], i)
}
}
Array.prototype.forEach=函数(回调){
对于(i=0;i
如果getConnection
是异步的,则第一个示例在remove
完成之前触发回调。
Array.prototype.forEach = function(callback) {
for(i = 0; i < this.length; i++) {
if (callback) callback(this[i], i)
}
}