Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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 有人能解释一下如何在Node.js中调用回调吗?_Javascript_Node.js_Asynchronous_Callback - Fatal编程技术网

Javascript 有人能解释一下如何在Node.js中调用回调吗?

Javascript 有人能解释一下如何在Node.js中调用回调吗?,javascript,node.js,asynchronous,callback,Javascript,Node.js,Asynchronous,Callback,我从概念上理解回调函数,但我不理解它们在Node.js中是如何理解的,并且对语法感到非常困惑。有人能对正在运行的每一行代码给我一个简单的解释吗?代码是有效的,但我不明白为什么 var removeById = function(personId, done) { Person.findByIdAndRemove(personId, function(err, data) { if(err) { done(err); } done(null, data);

我从概念上理解回调函数,但我不理解它们在Node.js中是如何理解的,并且对语法感到非常困惑。有人能对正在运行的每一行代码给我一个简单的解释吗?代码是有效的,但我不明白为什么

var removeById = function(personId, done) {
  Person.findByIdAndRemove(personId, function(err, data) {
    if(err) {
      done(err); 
    }
    done(null, data);
 });
};
逐行解释。

第1行假设

var removeById=functionpersonId,完成{

done是回调的正式标识符,稍后调用removeById函数时将传递该标识符

第2行

Person.findbyi和removePersonId、函数错误、数据{

findByIdAndRemove期望第二个参数是一个有两个参数的函数,第一个参数是err,它将保存error,第二个参数是data,它将保存data/result

第4行

多纳尔

第6行

打回电话时出错

多内努尔,数据

调用回调函数时,第一个参数为null,可能是为了表示没有错误和数据会保存数据/结果

额外说明:

如果您没有对removeById执行任何其他操作,那么传递给removeById的回调最好也应该包含两个参数,与传递给findByIdAndRemove的回调相同。findByIdAndRemove基本上类似于:

Person.findByIdAndRemove = function(personId, callback) {
  // The code is executed 
  // call function on error | success
  callback(err, data);
};
要执行的回调应该类似于:

const done = function(err, data) {
  if(err) {
   console.log(err); 
  }
  console.log(data);
}
您的代码:

var removeById = function(personId, done) {
  Person.findByIdAndRemove(personId, function(err, data) {
    if(err) {
      done(err); 
    }
    done(null, data);
 });
};
用法:

removeById(3, done);

相关:,我试图解释什么是回调函数。我从概念上理解回调函数,但我不理解它们在Node.js中是如何理解的。回调只是传递给另一个函数的函数,通常不由您自己调用。这在Node中没有什么不同,所以您不必知道其他任何内容。你所困惑的是什么?你所包含的代码似乎并不完整,没有被定义。在我看来,Node.js的回调与写在JavaScript中的回调模式不同,也没有任何不同的执行。继续,以使您更清楚地了解到底是什么让您感到困惑,以及您认为Node.js回调与其他js回调模式的区别。您的代码示例不完整,因为没有声明。此外,findByIdAndRemove函数的声明似乎缺失。请修改。干杯!现在有意义了!您可以接受如果回答了您的问题,则回答!: