export default {

    data(){
        return {
            state: 0,   // 0 无状态 1 加载中  2 加载完成 3 加载失败
            _state: 0,		// 状态 副本  设置 状态 以 副本为主 的 检定  正本 作为 视图渲染
        }
    },

    observers:{
        src:function (value) {
            if (this._src !== value) {
                this._src = value;
                return this.setState(1);
            }
        }
    },

    methods:{

        success:function(){
            this.setState(2);
            return this.$emit('load');
        },
        /* 设置状态
        * 	渲染规则 注意
        *  		从 其他 状态 ->  加载中 	需要 延长 async
        *  		从 加载中  -> 其他 状态    如果 目前处于 加载中 且时长不超过timeout 需要 延长 async 如果 不处于 加载中 将 直接 渲染
        *
        * */
        setState:function (state,draw={}) {

            /* 设置状态 */
            if (state !== this._state) {
                /* 清除 */
                clearTimeout(this._time);
                this._state = state;

                if (state === 1) {
                    this._time = setTimeout(()=>{
                        return this.state = 1;
                    },this.async);
                } else {
                    this.state = state;
                }

            }

        }

    },

    mounted(){
        this._src = this.src;
        return this.setState(1);
    }

}