使用Q.promises:如何捕捉异步扔?(Using Q.promises: how to cat

2019-07-22 00:49发布

我用Q代表承诺,但设立时的一些测试中,我发现我看不到出路在追赶,返回一个承诺在函数内部抛出异步错误。

我试图把它包装一个内部Q.when和链接一个fail和或为以下Q.fcall和链接fail ,但我不能得到它的工作。

    var func = function(){

               var deferred = Q.defer(); 
               setTimeout(function(){
                    throw new Error("async error");
               },100);

               return deferred.promise;

            }

            Q.fcall(func)
            .then(function(){
                console.log("success"); 
            })
            .fail(function(err){
                console.log(err); 
            })

有没有办法来这样做呢?

Answer 1:

在异常setTimeout不无论如何有关的承诺,你必须赶上自己使用try - catch -块。

或者你用Q.delay

function func(){
    return Q.delay(100).then(function(){
        throw new Error("async error");
    });
}

func()
.then(console.log.bind(console, "success"))
.fail(console.log.bind(console));


文章来源: Using Q.promises: how to catch an async throw?