2015-05-19 4 views
1

Если я вызываю функцию async несколько раз, которая меняет состояние памяти, мне нужна блокировка. например Если я звоню fs.writeFile несколько раз в моем коде, какНесколько вызовов для асинхронных функций

fs.writeFile('test.txt', 'data', function(err){}); 
fs.writeFile('test.txt', 'data', function(err){}); 

как я буду гарантировать, что нет никаких проблем синхронизации? Есть ли механизм блокировки?

ответ

1

В Javascript нет никаких «блокирующих» механизмов для этого типа проблем. Вместо этого вы отвечаете на завершение асинхронных операций и помещаете операции, которые вы хотите последовать в этот обратный вызов.

Если вы хотите, чтобы убедиться, что эти две команды происходит в правильной последовательности, то вы можете и должны вручную последовательности их:

fs.writeFile('test.txt', 'data1', function(err){ 
    // presumably some other code here 
    fs.writeFile('test.txt', 'data2', function(err){});   
}); 

Хотя, я полагаю, это упрощенный пример, потому что нет никаких причин, чтобы написать один кусок данных в виде файла, а затем сразу же записывать другой фрагмент данных в виде всего файла. Таким образом, обычно должен быть некоторый промежуточный код.

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