• React Native性能优化之可取消的异步操作


    前沿

    在前端的项目开发中,异步操作是一个不可获取的,从用户的角度来说,异步操作所带来的体验是美妙的,但有时候也会带来一些性能隐患。比如说:有一个异步请求还没有返回结果,但是页面却关闭了,这时由于异步操作的存在,系统不能及时回收内存。

    作者在今天就遇到了一个这样的场景,比如有一个输入框,用户点击搜索,发起异步请求,1.结果还没有返回回来,可以点击取消取消本次异步操作。2.用户关闭当前页面,取消本次异步操作。

    解决方案

    给Promise包裹上一层可以取消的功能,在then中判断根据传入的一个token去判断是否需要取消,然后是需要取消,则return,结束后续的action

    export function onSearch(inputKey, pageSize, token, favoriteDao, popularKeys, callBack) {
        return dispatch => {
            dispatch({
                type: Types.SEARCH_REFRESH
            })
            fetch(genFetchUrl(inputKey))
                .then(response => { 
                    return hasCancel(token) ? null : response.json(); // 如果任务取消,则不作任何处理
                })
                .then(responseData => { 
                    if (hasCancel(token, true)) { // 如果任务取消,则不作任何处理
                        console.log(' user cancel task');
                        return;
                    }
                    if (!responseData || responseData.items || responseData.items.length === 0) {
                        dispatch({
                            type: Types.SEARCH_FAIL,
                            message: `沒找到关于${inputKey}相关的信息`
                        })
                        doCallBack(callBack, `没找到关于${inputKey}相关的项目`)
                        return;
                    }
                    let items = responseData.items;
                    handleData(Types.SEARCH_REFRESH_SUCCESS, dispatch, '', {data: items}, pageSize, favoriteDao, {
                        showBottomButton: !Utils.checkKeysIsExist(popularKeys, inputKey),
                        inputKey,
                    })
                })
                .catch(e => {
                    console.log(e);
                    dispatch({type:Types.SEARCH_FAIL, error: e})
                })
        }
    }
    
    
  • 相关阅读:
    linux常用命令
    Python 父类调用子类方法
    import win32api 安装pip install pypiwin32
    Python 封装DTU-215码流卡 第一天
    git apply -v 提示 Skipped patch 打不上patch的解决办法
    2019/10/29
    12/9/2019
    11/9/2019
    9/7/2019
    人生若有命中注定
  • 原文地址:https://www.cnblogs.com/fe-linjin/p/10659248.html
Copyright © 2020-2023  润新知