Run NodeJS event loop / wait for child process to finish

前端 未结 4 1035
暖寄归人
暖寄归人 2021-02-04 11:01

I first tried a general description of the problem, then some more detail why the usual approaches don\'t work. If you would like to read these abstracted explanations go on

4条回答
  •  长情又很酷
    2021-02-04 11:22

    Your question (updated) is very interesting, it appears to be closely related to a problem I had with asynchronously catching exceptions. (Also Brandon and Ihad an interesting discussion with me about it! It's a small world)

    See this question on how to catch exceptions asynchronously. The key concept is that you can use (assuming nodejs 0.8+) nodejs domains to constrain the scope of an exception.

    This will allow you to easily get the location of the exception since you can surround asynchronous blocks with atry/catch. I think this should solve the bigger issue here.

    You can find the relevant code in the linked question. The usage is something like:

    atry(function() {
        setTimeout(function(){
            throw "something";
        },1000);
    }).catch(function(err){
        console.log("caught "+err);
    });
    

    Since you have access to the scope of atry you can get the stack trace there which would let you skip the more complicated source-map usage.

    Good luck!

提交回复
热议问题