微信小程序wx.showToast弹窗没完成就跳转,加入延时执行

今天在开发小程序项目的时候,想在用户登录成功后给个弹窗再跳转到个人中心。刚开始代码如下:

wx.showToast({

    title: ‘登录成功’,

    icon: ‘success’, 

    duration:2000, 

    success:function(){

        wx.redirectTo({

            url: ‘../user-index/user-index’

        }) 

    }

})

本以为弹窗会在显示2秒后才会跳转到个人中心页,可是实际测试发现,弹窗是出现了,可是还没看清楚就跳转到个人中心去了。

原因是success中的函数是在wx.showToast执行成功就执行,执行成功不等于执行完毕,也就是说弹窗刚执行success中的函数也就开始执行了,这里的duration:2000的设置对success里函数的执行是没影响的。

那么问题来了,该如何解决呢?

其实解决方法很简单,虽然success里面的函数是马上执行的,但我们可以让里面的wx.redirectTo延时执行啊,给它加上setTimeout延时执行不就可以了么。

于是代码改成如下:

wx.showToast({

    title: ‘登录成功’,

    icon: ‘none’,

    duration:2000, 

    success:function(){ 

        setTimeout(function () { 

            wx.redirectTo({ 

                url: ‘../user-index/user-index’

             }) 

         }, 2000) 

     } 

 })