任何一个可以给我的回调的NodeJS机管局简单的例子,我已经搜索了很多网站,但不能正确理解它是相同的,请给我一个简单的例子。
getDbFiles(store, function(files){
getCdnFiles(store, function(files){
})
})
我想要做这样的事情?
任何一个可以给我的回调的NodeJS机管局简单的例子,我已经搜索了很多网站,但不能正确理解它是相同的,请给我一个简单的例子。
getDbFiles(store, function(files){
getCdnFiles(store, function(files){
})
})
我想要做这样的事情?
var myCallback = function(data) {
console.log('got data: '+data);
};
var usingItNow = function(callback) {
callback('get it?');
};
现在打开节点或浏览器控制台,并粘贴上述定义。
最后这个下一行使用它:
usingItNow(myCallback);
相对于节点样式错误约定
科斯塔问这个是什么样子,如果我们要兑现节点错误回调约定。
在此约定,回调应该会收到至少有一个参数,第一个参数,是一个错误。 可选的,我们将有一个或多个其他参数,根据上下文。 在这种情况下,上下文是我们上面的例子。
在这里,我重写这个惯例我们的榜样。
var myCallback = function(err, data) {
if (err) throw err; // Check for the error and throw if it exists.
console.log('got data: '+data); // Otherwise proceed as usual.
};
var usingItNow = function(callback) {
callback(null, 'get it?'); // I dont want to throw an error, so I pass null for the error argument
};
如果我们要模拟出错误的情况,我们可以定义usingItNow这样
var usingItNow = function(callback) {
var myError = new Error('My custom error!');
callback(myError, 'get it?'); // I send my error as the first argument.
};
最终的用法是完全一样在上面:
usingItNow(myCallback);
在行为唯一的区别是队伍上的版本usingItNow
您已经定义:一,对于第一个参数馈送“truthy值”(Error对象)到回调,或喂它空的错误之一论点。
回调函数是简单地传递到另一个功能,使功能可以在稍后的时间把它的功能。 这通常出现在异步API S; 因为它是异步API调用将立即返回,所以你传递一个函数到它,当它完成其执行异步任务的API可以调用。
我能想到的JavaScript中最简单的例子是setTimeout()
函数。 这是一个接受两个参数的全局函数。 第一个参数是回调函数,第二个参数是在毫秒的延迟。 该功能的目的是等待的时间适量,然后调用回调函数。
setTimeout(function () {
console.log("10 seconds later...");
}, 10000);
你可能已经看过上面的代码,但只是没有意识到你在传递被称为一个回调函数的函数。 我们可以把上面的代码,使之更加明显。
var callback = function () {
console.log("10 seconds later...");
};
setTimeout(callback, 10000);
回调使用遍布节点的地方,因为节点是从地上爬起来,是因为它做的一切异步的。 甚至聊到文件系统的时候。 这就是为什么一吨的内部节点API的接受回调函数作为参数,而不是返回可以分配给一个变量的数据。 相反,它会调用回调函数,传递你想作为参数数据。 例如,你可以使用节点的fs
库读取文件。 该fs
模块暴露了两个独特的API函数: readFile
和readFileSync
。
该readFile
功能是异步的,而readFileSync
显然不是。 你可以看到,他们打算让你来只要有可能,因为他们称他们使用异步调用readFile
和readFileSync
代替readFile
和readFileAsync
。 下面是使用这两种功能的一个例子。
同步:
var data = fs.readFileSync('test.txt');
console.log(data);
上述块的线程执行,直到所有的内容代码test.txt
被读入存储器,并存储在变量data
。 在这个节点通常被认为是不好的做法。 有很多次,虽然当它是有用的,比如写一个小巧的脚本,做一些简单而乏味的时候,你不那么在意节省时间每纳秒,你可以。
异步(回调):
var callback = function (err, data) {
if (err) return console.error(err);
console.log(data);
};
fs.readFile('test.txt', callback);
首先,我们创建一个接受两个参数的回调函数err
和data
。 异步函数的一个问题是,它变得捕获错误更难让很多回调风格的API传失误作为第一个参数给回调函数。 这是检查的最佳实践err
有一个值,你做任何事情之前。 如果是这样,停止回调的执行和记录错误。
当有抛出的异常,因为你可以简单地用一个抓住他们同步调用有优势try/catch
块。
try {
var data = fs.readFileSync('test.txt');
console.log(data);
} catch (err) {
console.error(err);
}
在异步函数它不工作的方式。 因此没有赶上与API调用立即返回try/catch
。 使用回调总能察觉自己的错误,然后适当的异步API传送这些错误步入回调,你可以处理它,你认为合适的。
此外,虽然回调,有API,它是一种常用称为承诺的另一种流行的风格。 如果您想了解他们,那么你可以阅读整个博客文章中,我根据这个答案写在这里 。
这里是复制文本文件的例子fs.readFile
和fs.writeFile
:
var fs = require('fs');
var copyFile = function(source, destination, next) {
// we should read source file first
fs.readFile(source, function(err, data) {
if (err) return next(err); // error occurred
// now we can write data to destination file
fs.writeFile(destination, data, next);
});
};
这是一个使用的例子copyFile
函数:
copyFile('foo.txt', 'bar.txt', function(err) {
if (err) {
// either fs.readFile or fs.writeFile returned an error
console.log(err.stack || err);
} else {
console.log('Success!');
}
});
常见node.js的模式表明,回调函数的第一个参数是一个错误。 因为所有的控制流模块依赖于它,你应该使用这种模式:
next(new Error('I cannot do it!')); // error
next(null, results); // no error occurred, return result
尝试这个例子一样简单,你可以读,只是副本保存newfile.js做节点newfile中运行应用程序。
function myNew(next){
console.log("Im the one who initates callback");
next("nope", "success");
}
myNew(function(err, res){
console.log("I got back from callback",err, res);
});
我们创建了一个简单的功能
callBackFunction (data, function ( err, response ){
console.log(response)
})
// callbackfunction
function callBackFuntion (data, callback){
//write your logic and return your result as
callback("",result) //if not error
callback(error, "") //if error
}
const fs = require('fs');
fs.stat('input.txt', function (err, stats) {
if(err){
console.log(err);
} else {
console.log(stats);
console.log('Completed Reading File');
}
});
“FS”是一个节点模块,可以帮助你读取文件。 回调函数将确保您的文件名为“input.txt中”它被执行之前完全读取。 fs.stat()函数来得到这样的文件大小,创建日期和修改日期的文件信息。