promise,return解析

希望在promise中return结果

测试1

function fun() {
    
    
    return new Promise((resolve, reject) => {
    
    
    	resolve('模拟axios')
    })
}
function test() {
    
    
  	return fun().then(res => {
    
    
       console.log('1,',res)
       return 1
     }).then(res => {
    
    
        console.log('2,',res)
        return 2
     }).then(res => {
    
            
     	console.log('3,',res)
     	return 3
     }).catch(err=>{
    
    
        console.log('#err',err)
	})
}

运行一下test方法,每一步 return 一个值,显而易见,收到的参数都是上一步的结果
test运行结果
获得方法运行的结果

let result = test()

result
最终抛出结果,要在result之后再做一步

result.then(r=>{
    
    console.log("r",r)})

得到抛出结果
在这里插入图片描述

测试2

function p1() {
    
    
    return new Promise((resolve, reject) => {
    
    
        resolve('p1')
    })
}

function p2() {
    
    
    return new Promise((resolve, reject) => {
    
    
        resolve('p2')
    })
}
function run() {
    
    
    return p1().then(d => {
    
    
         console.log('1,',d)
         return 1
    }).then(d => {
    
    
         console.log('2,',d)
         return p2().then(d => {
    
    
             console.log('#t,',d)
             throw(9)
         })
    }).then(d => {
    
    
          console.log('3,',d)
    }).catch(err=>{
    
    
         console.log('#err',err)
    })
}

run运行结果
run运行结果
运行到catch抛出异常

let r = run()

没有return了,r的promiseResult为undefined
r没有下面的then了
测试3
把测试2 中的异常抛出关掉

function p1() {
    
    
    return new Promise((resolve, reject) => {
    
    
        resolve('p1')
    })
}

function p2() {
    
    
    return new Promise((resolve, reject) => {
    
    
        resolve('p2')
    })
}
function run() {
    
    
    return p1().then(d => {
    
    
         console.log('1,',d)
         return 1
    }).then(d => {
    
    
         console.log('2,',d)
         return p2().then(d => {
    
    
             console.log('#t,',d)
             return d
         })
    }).then(d => {
    
    
          console.log('3,',d)
          return '最后一步中必须有return'
    }).catch(err=>{
    
    
         console.log('#err',err)
    })
}

运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39308542/article/details/109313214