Что такое КБ в Multer? - PullRequest
       18

Что такое КБ в Multer?

0 голосов
/ 30 апреля 2019

В приведенном ниже коде из API-интерфейса multer опции и адресата, и имени файла являются анонимными функциями. Обе эти функции имеют аргумент под названием cb . Определены ли эти функции обратного вызова в модуле multer или я должен предоставить их?

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/tmp/my-uploads')
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
  }
})

var upload = multer({ storage: storage }

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Примечание: я не знаю, что такое multer

Допустим, у вас есть функция,

 function destination(req, files){
    //something happen here
 }

Теперь в вашем коде вы вызываете эту функцию с двумя аргументами

destination(req, files);

И теперь, если вам нужно сразу же выполнить другую функцию после завершения вышеуказанной функции, вам нужна функция обратного вызова. Допустим, вам нужно console.log('Hello world') после завершения функции назначения,

destination(req, files , function(){
    console.log('hello world')
});

Я уверен, что вы знаете такие функции. Теперь проблема заключается в том, что функция назначения принимает только 2 аргумента, поэтому нам нужно добавить еще один аргумент в определение функции. Давайте назовем третий аргумент как «cb»

 function destination(req, files, cb){
    //something happen here
 }

Теперь, какой тип cb должен быть? Это должна быть функция. не так ли? так что если третий аргумент является функцией, то мы должны где-то выполнить эту функцию cb. Лучшее место для выполнения функции cb - после всего кода внутри функции назначения.

 function destination(req, files, cb){
    //something happen here
    cb();
 }

И здесь у нас есть функция обратного вызова !! Если вы глубоко задумаетесь, то поймете, почему они представили javaScript Promises

1 голос
/ 30 апреля 2019

Краткий ответ: Вы предоставляете обратный вызов.

cb - это функция обратного вызова, которая принимает 2 параметра.

вы можете увидеть это в сценарии использования любого из методов. Такие как ...

let req = true;
let file = 'MyFile.txt';
function myCallbackFunc = function(value1, value2){ console.log('my callback function'); };
storage.filename(req, file, myCallbackFunc));

Пожалуйста, поймите, что я не знаю, как должны выглядеть параметры "req" или "file", поэтому я просто что-то придумал для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...