我在节点js中实现回调函数。但是我对回调函数有疑问。我在节点js中尝试了两个函数,一个回调函数和另一个普通函数。两个函数都试图运行其给定的相同结果。我没有任何人解释我的代码。
callback_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(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
答案 0 :(得分:1)
如果您调用相同的函数,结果将是相同的。
这不是正确的回调。
回调是函数的异步等效项。回调 函数在给定任务完成时被调用。节点变重 使用回调。 Node的所有API的编写方式都使得 他们支持回调。
在您的情况下,您正在同步执行事务。 您只能在另一个函数的参数中使用其指针来调用函数。
示例1
function gener(callback)
{
console.log("hai")
callback("5ccac2fd247af0218cfca5dd")
}
gener(function(id)
{
console.log("hello")
})
Example2
gener()
function data()
{
console.log("hello")
}
function gener()
{
console.log("hai")
data()
}