在本机应用程序中反复调用回调函数时速度太慢

时间:2017-07-15 04:19:09

标签: react-native react-native-android react-native-ios

当我开始下载任务时,它会有一个重复调用的回调函数。但它会很慢,触摸按钮时无法提供反馈。

            Fileio.downloadFile(downloadData[downloadFileIndex].uri, '1.jpg',this.progressFunc.bind(this)).then((DownloadResult)=> {
                if (DownloadResult.statusCode == 200) {
                    let nextDownloadFileIndex = this.props.downloadFileIndex + 1;
                    this.props.dispatch(DOWNLOADED_A_FILE({
                        downloadFileIndex:nextDownloadFileIndex,
                        progressNum:0
                }))
                }
            }).catch((error)=> {
                console.log(error)
            })

这是我的代码,回调函数也是如此

    progressFunc(DownloadBeginCallbackResult) {
    let progressNum = DownloadBeginCallbackResult.bytesWritten / DownloadBeginCallbackResult.contentLength;
    if(progressNum<=0.99){
        this.props.dispatch(DOWNLOADING_A_FILE({
            progressNum:progressNum,
            jobId:this.props.jobId
        }));
    }else{
        this.props.dispatch(DOWNLOADING_A_FILE({
            progressNum:0,
            jobId:this.props.jobId
        }));
    }
}

我的意思是当我触摸按钮时我无法立即获得反馈。我认为这是因为我有一个反复调用的回调函数。所以js无法处理这么多任务;

1 个答案:

答案 0 :(得分:1)

听起来好像JS线程忙着做请求而无法与UI线程进行通信。你可以尝试的一件事就是把你包裹在InteractionManager.runAfterInteractions(() => ...)的新闻处理程序中 见https://facebook.github.io/react-native/docs/interactionmanager.html