2016-07-19 3 views
0

Это может быть простой вопрос, но я пишу, чтобы задать вопрос, потому что я просто не понимаю его. Что такое аргумент «null» в примере async.some ниже? Согласно документации, параметр должен принимать ошибку, но какова точка передачи ошибки в обратных вызовах?async.js объяснение, необходимое для понимания аргумента ошибки обратного вызова

async.some(['file1','file2','file3'], function(filePath, callback) { 
fs.access(filePath, function(err) { 
    callback(null, !err) 
}); 
}, function(err, result) { 
    // if result is true then at least one of the files exists 
}); 

Я сделал несколько экспериментов, так как я не понимаю, как аргумент ошибки попадает на главный параметр ошибки обратного вызова.

callback('err', true) // main callback returns 'err' and undefined. 
         // second argument 'true' got lost? 

callback(true) // main callback returns true and undefined. 
       // did not pass error argument but still works without the first argument? 
+0

[Документация] (http://caolan.github.io/async/docs.html#.detect) говорит: * Результат будет первым элементом в массиве, который проходит тест правды (iteratee) или значение undefined, если оно не прошло. Вызывается с (err, result). * –

+0

Прошу прощения, что я допустил ошибку, ссылаясь на async.detect, когда я действительно спрашивал об async.some. – sawa

ответ

1

Полезно различать ошибки, когда процесс (ваша некоторая задача) встречает ошибку и когда она преуспевает. Когда кто-то завершит, вы, скорее всего, захотите узнать результат и произошла ли ошибка, и обработайте эти случаи отдельно. Что касается async-js, то любое значение false, принятое как ошибка, будет считаться ошибкой; если ошибка происходит в любом из файлов только ошибка будет передана в функции обратного вызова

В примере коды вы предоставили

callback('err', true) // An error is passed so true will not be passed to final callback 

callback(true) // true is the error, as an error is passed, only true (the error) and no result will be passed to the final callback. 

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

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