Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的回调机制_Javascript_Typescript_Callback_Return - Fatal编程技术网

Javascript中的回调机制

Javascript中的回调机制,javascript,typescript,callback,return,Javascript,Typescript,Callback,Return,我试图理解javascript(typescript)中的回调机制。如果我有一个需要回调作为输入参数的函数,我是否必须显式地使用return语句将其与调用代码中的实际回调实现连接起来,或者我们可以在被调用的代码中使用“callback”引用,它会自动与调用代码中的回调代码连接起来 代码示例(TypeScript) 你不需要返回,你可以简单地这样称呼它 clear(collectionName: string, callback: any) { this.getConnection

我试图理解javascript(typescript)中的回调机制。如果我有一个需要回调作为输入参数的函数,我是否必须显式地使用return语句将其与调用代码中的实际回调实现连接起来,或者我们可以在被调用的代码中使用“callback”引用,它会自动与调用代码中的回调代码连接起来

代码示例(TypeScript)


你不需要返回,你可以简单地这样称呼它

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)
  }
}