Yangi funktsiyaning argumentlarini argument deb tushunmaslik

Tasvirlarni yuklash tizimini yaratish uchun o'quv qo'llanmasini kuzataman.

Now the following function is used for uploading, and it uses the external module formidable

function upload(response, request) {
  console.log("Request handler 'upload' was called.");

  var form = new formidable.IncomingForm();
  console.log("about to parse");
  form.parse(request, function(error, fields, files) {
    console.log("parsing done");

    fs.rename(files.upload.path, "/tmp/test.png",
      function(error) {
        if (error) {
          fs.unlink("/tmp/test.png");
          fs.rename(files.upload.path, "/tmp/test.png");
        }
      });
      response.writeHead(200, {"Content-Type": "text/html"});
      response.write("received image:
"); response.write(""); response.end(); }); }

form.parse 2 argument oladi, talab va yangi funktsiya , lekin yangi funktsiya 3 ta yangi argument oladi.

Buni tushunish mumkin emas. Ushbu 3 ta yangi dalillar qayerdan olingan? Tashqi kutubxonaga aloqadormi yoki JavaScript-ni to'g'ri tushunmayapmanmi?

Oldindan rahmat.

3
Bu tashqi kutubxonada kutilgan chaqiruv funktsiyasi. Haqiqatdan HK asosiy mavzular haqida o'qishingiz kerak. javascriptissexy.com/… dan keyin manba toping parse funktsiyasini amalga oshiruvchi Formidable kodi.
qo'shib qo'ydi muallif tiblu, manba
Bu tashqi kutubxonada kutilgan chaqiruv funktsiyasi. Haqiqatdan HK asosiy mavzular haqida o'qishingiz kerak. javascriptissexy.com/… dan keyin manba toping parse funktsiyasini amalga oshiruvchi Formidable kodi.
qo'shib qo'ydi muallif tiblu, manba

6 javoblar

form.parse take 2 args, second arg is function called callback. Callback get arguments from form.parse implementation.

Oddiy misolni tushuntirib bering:

function foo(callback) {
    var arg1 = 10;
    var arg2 = 'string';
    var arg3 = false;

   //call function with args
    callback(arg1, arg2, arg3);
};


function callback(num, str, bool) {
   //we get args from foo implementation
    console.log(num);
    console.log(str);
    console.log(bool);
}

foo(callback);

foo kodida biz 3 args bilan callback deymiz. Endi ularni callback funktsiyasida ishlatishimiz mumkin

2
qo'shib qo'ydi

form.parse take 2 args, second arg is function called callback. Callback get arguments from form.parse implementation.

Oddiy misolni tushuntirib bering:

function foo(callback) {
    var arg1 = 10;
    var arg2 = 'string';
    var arg3 = false;

   //call function with args
    callback(arg1, arg2, arg3);
};


function callback(num, str, bool) {
   //we get args from foo implementation
    console.log(num);
    console.log(str);
    console.log(bool);
}

foo(callback);

foo kodida biz 3 args bilan callback deymiz. Endi ularni callback funktsiyasida ishlatishimiz mumkin

2
qo'shib qo'ydi

Buni tasavvur qilish usuli form.parse ikkita parametrni oladi - birinchi so'rov bilan ko'rsatilgan va ikkinchisi funksiya. Ushbu ikkinchi funktsiya form.parse uchun parametr sifatida qabul qilinadi, shunda bu funksiya bir nuqtada chaqirilishi mumkin.

Buning o'rniga uning yozganini ko'rish siz uchun ravshanroq bo'lishi mumkin (bu teng, ammo shubhasiz, aniqroq):

function upload(response, request) {
  console.log("Request handler 'upload' was called.");
  var process_request = function(error, fields, files) {
    console.log("parsing done");

    fs.rename(files.upload.path, "/tmp/test.png",
      function(error) {
        if (error) {
          fs.unlink("/tmp/test.png");
          fs.rename(files.upload.path, "/tmp/test.png");
        }
      });
      response.writeHead(200, {"Content-Type": "text/html"});
      response.write("received image:
"); response.write(""); response.end(); }; var form = new formidable.IncomingForm(); console.log("about to parse"); form.parse(request, process_request ); }

Bu holda biz process_request funksiyasini e'lon qildik va uni form.parse ga yuborishimiz kerak. Ushbu funktsiyani amalga oshirish uchun "qayta chaqiriladi" deb nomlanadi va u chaqirilganda 3 parametr bilan uni chaqiradi (ehtimol, garchi kafolatlanmagan bo'lsa).

1
qo'shib qo'ydi

Buni tasavvur qilish usuli form.parse ikkita parametrni oladi - birinchi so'rov bilan ko'rsatilgan va ikkinchisi funksiya. Ushbu ikkinchi funktsiya form.parse uchun parametr sifatida qabul qilinadi, shunda bu funksiya bir nuqtada chaqirilishi mumkin.

Buning o'rniga uning yozganini ko'rish siz uchun ravshanroq bo'lishi mumkin (bu teng, ammo shubhasiz, aniqroq):

function upload(response, request) {
  console.log("Request handler 'upload' was called.");
  var process_request = function(error, fields, files) {
    console.log("parsing done");

    fs.rename(files.upload.path, "/tmp/test.png",
      function(error) {
        if (error) {
          fs.unlink("/tmp/test.png");
          fs.rename(files.upload.path, "/tmp/test.png");
        }
      });
      response.writeHead(200, {"Content-Type": "text/html"});
      response.write("received image:
"); response.write(""); response.end(); }; var form = new formidable.IncomingForm(); console.log("about to parse"); form.parse(request, process_request ); }

Bu holda biz process_request funksiyasini e'lon qildik va uni form.parse ga yuborishimiz kerak. Ushbu funktsiyani amalga oshirish uchun "qayta chaqiriladi" deb nomlanadi va u chaqirilganda 3 parametr bilan uni chaqiradi (ehtimol, garchi kafolatlanmagan bo'lsa).

1
qo'shib qo'ydi

Ikkinchi mustaqil o'zgaruvchining argumenti form.parse uslubiga o'tkazildi, chunki ikkinchi argumentni qayta chaqirish funktsiyasi. Forma parse tomonidan tuzilganidan keyin uni chaqiradi. Qaytarish funktsiyasining argumentlari uchun qiymatlar form.parse usulidan kelib chiqadi.

0
qo'shib qo'ydi

Ikkinchi mustaqil o'zgaruvchining argumenti form.parse uslubiga o'tkazildi, chunki ikkinchi argumentni qayta chaqirish funktsiyasi. Forma parse tomonidan tuzilganidan keyin uni chaqiradi. Qaytarish funktsiyasining argumentlari uchun qiymatlar form.parse usulidan kelib chiqadi.

0
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb