Cần tìm hướng giải quyết !!!



  • Chào mọi người !
    Mình đang gặp 1 vấn đề đang cần tìm hướng giải quyết. Mọi người ai từng có trường hợp tương tự hay gần giống thì chỉ giùm mình hướng đi.

    Hiện tại mình có 1 router để tìm user, nếu tìm thấy thì làm taskFunc(), còn ko thì response báo lỗi. Nhưng mà ở đây taskFunc() của mình nó chạy mất nhiều thời gian ko biết khi nào sẽ xong, mà mình muốn là sau khi ktra user xong phải res về cho client biết, còn cái taskFunc() chỉ là chạy bên dưới server thôi, nếu có lỗi gì đó khi chạy thì sẽ thông báo ra lỗi...

    router.post('/router1, function(req, res){
        var username = body.username
    
        User.find({where: {username: username}})
        .then(function(_data){
            if(_data){
                return taskFunc()
            }else{
                res.status(400).end()
            }
        })
    })
    
    var taskFunc = function(username){
        // function này thời gian xử lý mất nhiều thời gian
        // vì nó cứ nghỉ khoảng 30s mới thực hiện 1 nhiệm vụ khác
    }
    

    Cảm ơn mọi người đã ghé qua !



  • như này bạn sẽ push nó vào queue sau đó sẽ có 1 process check để read từ queue và handle, như thế sẽ không ảnh hưởng tới process find user của bạn !



  • Nếu taskFun không cần trả lại thông tin cho client thì bạn có thể dùng setTimeout để run TaskFun

    if (_data) {
      res.json({found: true})
      setTimeout(taskFun,0)
    } else {
      res.status(400).end()
    }
    


  • @Quang-Le nó vẫn đợi taskFun chạy xong rồi mới res về.



  • vậy bạn thử thêm res.end() trước khi run setTimeout



  • bạn thử sử dụng fork xem sao.


Log in to reply