nodeJs 콜백 간단한 예
누가 나에게 노드Js 콜백의 간단한 예를 들어줄 수 있습니까, 나는 이미 많은 웹사이트에서 동일한 것을 검색했지만 제대로 이해할 수 없습니다. 간단한 예를 들어주세요.
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);
노드 유형 오류 규칙과 관련하여
Costa는 노드 오류 콜백 규칙을 준수한다면 어떤 결과가 나올지 물었습니다.
이 규칙에서 콜백은 하나 이상의 인수(첫 번째 인수)를 오류로 수신해야 합니다.선택적으로 컨텍스트에 따라 하나 이상의 추가 인수가 있습니다.이 경우 컨텍스트가 위의 예입니다.
여기서 저는 이 협약에서 우리의 예를 다시 작성합니다.
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
};
오류 사례를 시뮬레이션하려면 ItNow를 사용하여 다음과 같이 정의할 수 있습니다.
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정의한 것은 첫 번째 인수에 대한 콜백에 "진실 값"(오류 개체)을 제공하는 것 또는 오류 인수에 대해 null을 제공하는 것입니다.
콜백 함수는 나중에 호출할 수 있도록 다른 함수로 전달하는 함수입니다.이것은 비동기 API에서 흔히 볼 수 있습니다. API 호출은 비동기이기 때문에 즉시 반환되므로 API가 비동기 작업을 수행할 때 호출할 수 있는 함수를 API로 전달합니다.
할 수 는 자스크트생수예있는간단한입니다.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노드에서 이는 일반적으로 잘못된 관행으로 간주됩니다.하지만 단순하지만 지루한 일을 하기 위해 짧은 스크립트를 작성할 때와 같이 유용할 때가 있으며 가능한 한 1나노초의 시간을 절약하는 데 크게 신경 쓰지 않습니다.
비동기식(콜백 포함):
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
이 예제를 읽을 수 있는 대로 간단하게 사용해 보십시오. copy save newfile.js do node 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
}
//delay callback function
function delay (seconds, callback){
setTimeout(() =>{
console.log('The long delay ended');
callback('Task Complete');
}, seconds*1000);
}
//Execute delay function
delay(1, res => {
console.log(res);
})
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 기능은 파일 크기, 생성된 날짜, 수정된 날짜와 같은 파일 정보를 가져오는 것입니다.
이 블로그 게시물은 좋은 글입니다.
https://codeburst.io/javascript-what-the-heck-is-a-callback-aba4da2deced
function doHomework(subject, callback) {
alert(`Starting my ${subject} homework.`);
callback();
}
function alertFinished(){
alert('Finished my homework');
}
doHomework('math', alertFinished);
A callback는 에매 변수함전수다니입에 입니다.Higher Order Function(계속).콜백의 간단한 구현은 다음과 같습니다.
const func = callback => callback('Hello World!');
함수를 호출하려면 다른 함수를 인수로 정의된 함수에 전달합니다.
func(string => console.log(string));
// Traditional JS way
function display(result) {
console.log("Sum of given numbers is", result);
}
function calculateSum(num1, num2, callback) {
console.log("FIrst number is", num1, "and second number is", num2);
const result = num1 + num2;
callback(result);
}
calculateSum(10, 20, display);
// Node JS way
const display = function(result) {
console.log("Sum of given numbers is", result);
}
const calculateSum = function(num1, num2, callback) {
console.log("FIrst number is", num1, "and second number is", num2);
const result = num1 + num2;
callback(result);
}
calculateSum(10, 20, display);
// By using anonymous function
const calculateSum = function(num1, num2, callback) {
console.log("FIrst number is", num1, "and second number is", num2);
const result = num1 + num2;
callback(result);
}
calculateSum(10,20, function(result) {
console.log("Sum of given numbers is", result)
});
// By using arrow function
const calculateSum = function(num1, num2, callback) {
console.log("FIrst number is", num1, "and second number is", num2);
const result = num1 + num2;
callback(result);
}
calculateSum(10, 20, x => console.log("Sum of given numbers is", x));
언급URL : https://stackoverflow.com/questions/19739755/nodejs-callbacks-simple-example
'programing' 카테고리의 다른 글
| Android 7.0(Nougat)부터는 기본 인터페이스 방법만 지원됩니다. (0) | 2023.08.28 |
|---|---|
| 선택 2 상자 높이를 변경하려면 어떻게 해야 합니까? (0) | 2023.08.28 |
| CSS를 사용하여 텍스트 삽입 (0) | 2023.08.28 |
| iOS 애플리케이션 스플래시 화면에 사용되는 크기는 무엇입니까? (0) | 2023.08.23 |
| 신속하고 돌연변이적인 구조 (0) | 2023.08.23 |