В основном у меня есть что-то похожее на код ниже, и я не совсем уверен, какой порядок выполнения всегда будет происходить. Прямо сейчас я предполагаю, что это выполняется неблокирующим образом, будучи
func() -> self.db.createEntry() -> res.on() -> callback -> self.submit()
Но у меня были случаи, когда это
func() -> self.db.createEntry() -> callback -> res.on() -> self.submit()
Я не могу контролировать, когда вызывается res.on('data')
потому что это слушатель события сокета и обрабатывается на отдельном сервере. Я думаю, что я боюсь, что обратный вызов будет вызван в середине res.on()
, это может произойти? Скажем, res.on()
находится прямо в середине выполнения, сможет ли обратный вызов прервать это?
const func = function(){
self.db.createEntry(self.arg, self.arg1, function(response){
if(response){
self.arg = response
self.state.wait = false
if(self.state.wait){
self.submit()
}
}
});
res.on('data', function(data) {
data = parse(data);
if(!data.contentId){
self.state.wait = true;
self.state.data = data
}
else {
self.submit(data);
}
});
}
func()
db.prototype.createEntry = function(arg, arg1, callback) {
self.connect();
self.connection.query('INSERT INTO table_name SET ?', arg, function(err, results, fields) {
if(err) {
self.disconnect();
callback()
}
else {
self.disconnect();
callback(results)
}
});
}