programing

nodeJs 콜백 간단한 예

jooyons 2023. 8. 28. 20:59
반응형

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그리고.readFileSyncreadFile그리고.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

반응형