0

我在节点 js 中实现回调函数。但我对回调函数有疑问。我在节点 js 中尝试了两个函数,一个回调函数和另一个普通函数。两个函数我都试图运行它给定的相同结果。我没有人解释我的代码。

回调函数.js

const MongoClient = require('mongodb').MongoClient;
var ObjectId = require('mongodb').ObjectID

// Connection URL
var db =" "

MongoClient.connect('mongodb://localhost:27017', (err, client) => {
  // Client returned
  db = client.db('olc_prod_db');

  gener(function(id)
{
    db.collection('Ecommerce').find({ _id: new ObjectId(id) }, function(err,result)
    {
        console.log("hello")
    })
})


function gener(callback)
{
    db.collection('Ecommerce').find({}).toArray(function(err,result)
    {
        console.log("hai")
    })
    callback("5ccac2fd247af0218cfca5dd")
}
});

normal_function.js

const MongoClient = require('mongodb').MongoClient;
var ObjectId = require('mongodb').ObjectID

// Connection URL
var db =" "

MongoClient.connect('mongodb://localhost:27017', (err, client) => {
  // Client returned
  db = client.db('olc_prod_db');

  gener()


  function data()
  {
      console.log("hello")
  }


function gener()
{
    db.collection('Ecommerce').find({}).toArray(function(err,result)
    {
        console.log("hai")
    })
    data()
}
});

它显示结果 hello 和 hai

4

1 回答 1

1

如果您调用相同的函数,结果是相同的。

这不是一个适当的回调。

回调是函数的异步等价物。在完成给定任务时调用回调函数。Node 大量使用回调。Node 的所有 API 都以支持回调的方式编写。

在您的情况下,您正在同步执行操作。您只能在另一个函数的参数中使用它的指针来调用一个函数。

示例 1

function gener(callback)
{  
    console.log("hai")
    callback("5ccac2fd247af0218cfca5dd")
}

gener(function(id)
{   
        console.log("hello")
})

示例 2

gener()

function data()
{
    console.log("hello")
}

function gener()
{
    console.log("hai")
    data()
}

于 2019-05-07T12:35:49.940 回答