2016-10-06 2 views
0
downloadPhoto('http://coolcats.com/cat.gif', handlePhoto) 

function handlePhoto (error, photo) { 
    if (error) console.error('Download error!', error) 
    else console.log('Download finished', photo) 
} 

console.log('Download started') 

Я знаю handlePhoto как обратный вызов передается в downloadPhoto, но я путать с самой handlePhoto функции, то первый параметр является ошибкой, является то, что средства JS признать это ошибкой? я могу использовать замену «err» или другое имя параметра. И что является вторым параметром в console.log, я пока не могу найти для него точно ответ.Javascript, как «ошибка» в качестве параметра

+0

Вы можете указать параметры, что хотите. Это просто означает, что где-то внутри 'downloadPhoto', он по сути вызывает' handlePhoto (mightBeAnError, photoData) '. –

ответ

2

После завершения загрузки функции загрузки функции функция handPhoto вызывает некоторые параметры. Согласно соглашению (правило обычно соблюдается), первым параметром всегда должна быть ошибка & остальное может быть результатом.

function downloadPhoto(url , callback){ 
    if(gotImageFromRemoteSuccessfully){ 
     callback(null,successResponse) 
    } else{ 
    callback(whatWentWrong , null); 
    }  
} 
1

Первый параметр - ошибка, означает ли это, что js распознает его как ошибку?

Нет, это означает, что, когда эта функция вызывается, то первый аргумент, переданный ему будет помещен в переменную с именем ошибка.

можно использовать "подстраховаться" заменить или другое имя параметра

Да. Вы можете вызвать аргументы, которые вы хотите, в соответствии с обычными правилами именования аргументов.

И что это второй параметр в console.log

Это вторая вещь, которую вы хотите, чтобы быть зарегистрированным. console.log принимает любое количество аргументов и записывает их все.

0

Спасибо всем, я думаю, что если я добавляю обратного вызова & & обратного вызова (ошибка, результат) в функции боковой downloadPhoto, было бы более понятно для меня. Но здесь есть следующий вопрос: я видел много функций, которые не имеют обратного вызова & & callback(), как эта функция может передать параметр функции обратного вызова?

+0

@ Moniv @ Quentin @ Mike – STR

Смежные вопросы