codecamp

百度智能小程序 延迟执行

swan.nextTick

基础库 3.15.104 开始支持,低版本需做兼容处理。

解释:延迟一部分操作到下一个时间片再执行。(类似于 setTimeout)

方法参数

Function callback

callback参数说明

自定义组件中的 setData 和 triggerEvent 等接口为同步操作,当这几个接口被连续调用时,都是在一个同步流程中执行完的,因此若逻辑不当可能会导致出错。

举例 :当父组件的 setData 引发了子组件的 triggerEvent,进而使得父组件又进行了一次 setData,期间有通过 s-if 语句对子组件进行卸载,就有可能引发奇怪的错误,所以对于不需要在一个同步流程内完成的逻辑,可以使用此接口延迟到下一个时间片再执行。


图片示例

代码示例 1 

在开发者工具中打开

// 自定义组件逻辑 (custom.js)
Component({
    properties: {
        name: {
            type: String,
            value: 'swan'
        }
    },
    data: {
        age: 1,
        number: ''
    },
    methods: {
        nextTick() {
            swan.showToast({
                title: '在控制台或者sConsole中查看执行顺序',
                icon: 'none'
            });
            this.setData({number: 1}) // 直接在当前同步流程中执行
            console.log(this.data.number);
            swan.nextTick(() => {
                this.setData({number: 3}) // 在当前同步流程结束后,下一个时间片执行         
                console.log(this.data.number);
            })
            this.setData({number: 2}) // 直接在当前同步流程中执行
            console.log(this.data.number);
        }
    }
});

代码示例 2: 常用用法 

在开发者工具中打开

<view>
    <view>{{name}}</view>
    <button bindtap="getStorage">点击赋值</button>
</view>
Page({
    data: {
        name: 'swan',
        renderEnd: true
    },
    getStorage(){
        this.setData({
            name: 'smartApp'
        }, () => {
            console.log('异步流程', this.data.renderEnd);
        });
        console.log('当前时间片', this.data.renderEnd);
        swan.nextTick(() => {
            this.data.renderEnd = false; // 在当前同步流程结束后,下一个时间片执行
            console.log('nextTick时间片', this.data.renderEnd);
        });
    }
});


百度智能小程序 Animation
百度智能小程序 获取菜单按钮布局位置
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

百度智能小程序开发文档

百度智能小程序 组件

百度智能小程序 地图

百度智能小程序 画布

百度智能小程序 API

百度智能小程序 界面

百度智能小程序 关注小程序引导组件

百度智能小程序 自定义组件

百度智能小程序 媒体

百度智能小程序 设备

百度智能小程序 拨打电话

百度智能小程序 内存警报

百度智能小程序 手机联系人

百度智能小程序 用户截屏事件

百度智能小程序 第三方平台

百度智能小程序 开放接口

百度智能小程序 百度收银支付

百度智能小程序 分包预下载

百度智能小程序 数据分析

百度智能小程序 服务端

百度智能小程序 云开发

百度智能小程序 初始化

百度智能小程序 云函数

百度智能小程序 服务端初始化

百度智能小程序 服务器获取上下文

百度智能小程序 服务端云函数

百度智能小程序 开发教程

百度智能小程序 功能开发

百度智能小程序 基本原理

百度智能小程序 小程序自动化

百度智能小程序 视频教程

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }