/ / nodejs і неблокіруючий кошмар - mysql, node.js, неблокірування

nodejs і неблокіруючий кошмар - mysql, node.js, nonblocking

В даний час я розробляю API, використовуючи node.js і MySQL. Я новачок у цьому неблокіруючому матеріалі, і у мене є запитання. Я використовую вузол та модуль MySQL.

Скажімо, що ми маємо таку функцію:

function doQuery(sql, callback) {
connect(); //does the Client.connect()
client.query(sql, function(err, results, fields) {
if (err) {
errorLog.trace(err, __filename);
throw err;
} else {
logger.trace("DATABASE ACCESS: {query: " + sql + "} result: OK", __filename);
}
client.end();

callback(results);
});
}

Все працює нормально, зворотний дзвінок обробляє поверненнявід цінностей, але є щось, що турбує мене. Мій браузер, що до відповіді, і я не знаю, чи це тому, що протягом цього часу вузол фактично заблоковано, чи ні.

Отже, як я можу дізнатися, чи дійсно є операціяблокування процесу мого вузла? Я думав, що коли ви передаєте зворотній виклик функції, вузол автоматично обробляє його і видає виконання цього зворотного виклику в чергу циклу події. Але я цього не впевнений

Чи все це має сенс для вас?

Відповіді:

15 для відповіді № 1

Існує різниця між очікуванням браузера та блокуванням node.js.

Браузер повинен чекати, оскільки він не може отриматидані миттєво повертаються. Веб-переглядач припинить чекати, коли ви надішлете відповідь назад. Просто тому, що очікує браузер, не означає, що вузол .js блокує, це лише означає, що зв'язок все ще відкритий

Node.js не працює, поки ви чекаєте зворотного дзвінка. це не блокується.

вузолJS може мати тисячі відкритих зв'язків із клієнтами браузерів. Це не означає, що він блокує кожен з них, це просто означає, що він працює на холості, поки не буде виконано зворотний виклик або новий запит для обробки.