关于es6中Promise运行的一个报错?

vcxiaohan 发布于 2016/11/06 16:17
阅读 164
收藏 0

代码如下:

function getNumber(){
            var p = new Promise(function(resolve, reject){
                //做一些异步操作
                setTimeout(function(){
                    var num = Math.ceil(Math.random()*10); //生成1-10的随机数
                    if(num<=5){
                        resolve(num);
                    }
                    else{
                        reject('数字太大了');
                    }
                }, 200);
            });
            return p;            
        }

        getNumber()
        .then(
            function(data){
                console.log('resolved');
                console.log(data);
                return getNumber();
            }, 
            function(reason, data){
                console.log('rejected');
                console.log(reason);
                return getNumber();
            }
        )
        .then(
            function(data){
                console.log('resolved');
                console.log(data);
                return getNumber();
            }, 
            function(reason, data){
                console.log('rejected');
                console.log(reason);
                return getNumber();
            }
        )



多刷新几次,就会报下面错误,求解释:

加载中
1
wuyiw
wuyiw
第二个then里又return了getNumber(), 里面的reject没处理
v
vcxiaohan
明白了,谢啦~
wuyiw
wuyiw
@vcxiaohan 回复@vcxiaohan : 因为你没有继续then啊..
v
vcxiaohan
回复 @wuyiw : 请问是怎么看出来第2个then的reject没有处理的?
wuyiw
wuyiw
@vcxiaohan 回复@vcxiaohan : resolve没处理没关系
wuyiw
wuyiw
下一页
0
thanatosx
thanatosx

一楼正解, 你可以在最后加个.catch(function)


返回顶部
顶部