关于promise的问题

074B85B852C493AD25B021BB24FC9A2C.jpg
怎么判断 getToken 里面的回调执行 还是没执行啊, 这个回调如果存在的话 还是个异步的

阅读 2.2k
3 个回答
methods : {
    isMyApp()
    {
        return new Promise((reslove, reject) => {
                //getToken自己写返回值
                if (getToken) {
                    reslove(true);
                } else {
                    reject(new Error("error"));
                }
            }
        )
    }
}
,
mounted()
{
    this.isMyApp().then(function (res) {
        console.log('res -------', res)
    }, function (error) {
        console.log(error);
    })
}

resolve(false) 删了即可。你的问题在于不理解 Promise 如果使用

new Promise((reslove, reject)=>{
    // reslove() 调用这个会执行then回调
    // reject() 调用这个会执行catch回调
    // 上述方法只能调用一次。因为你 getToken 是异步的。所以一直都是 false 
}).then(v=>{}).catch(v=>{})

更新时间:2020年4月18日19:53:33

你看下面这个图是不是能能理解,因为你的 getToken 是个异步操作(理解为 setTimeout)。然后呢你同步的执行了 reslove(false)
Promise 状态和值是不可变的,所以导致一直都是 false

image.png

axios它不香吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题