关于代码执行和Javascript阻止/非阻止的性质的问题

问题描述 投票:0回答:1

基本上,我有与下面的代码相似的东西,我不完全确定总是要执行什么执行顺序。现在,我想它以一种非阻塞的方式执行,即>

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)
        }
    });
}

基本上,我有与下面的代码相似的东西,我不完全确定总是要执行什么执行顺序。现在,我想它以一种非阻塞的方式执行,即...

javascript mysql performance blocking
1个回答
1
投票

在函数中JavaScript代码到switch midway

的唯一方法是因为有yield指令。
© www.soinside.com 2019 - 2024. All rights reserved.