flutter 同时执行多个异步请求回调

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter 同时执行多个异步请求回调相关的知识,希望对你有一定的参考价值。

参考技术A flutter中提供了Future.wait()函数,可以在执行多个异步请求之后有一个统一的回调结果,但是劣势在于,每一个异步函数的函数体中都需要执行return去返回结果,如果在异步请求中,有多层success或者fail这种函数的嵌套,那么可能会在某个地方忽略掉retrun,导致没有办法拿到正确的结果。所以这里封装了一个类似于js中Promise中的类去执行多个异步请求。

调用方式如下:

多个异步请求调用一个回调函数

  在我项目中曾经出现一个bug,就是在页面需要通过两个ajax获取两个数据,然后对这两个数据进行运算,然后得出结果,显示在页面上。而在测试过程中,发现两个数据始终为0,运算结果不正确。通过使用chrome开发者工具的断电调试功能,发现在ajax请求发出之后,程序直接进行下一步运算,没有等待服务器数据的接接收,这是常见的同步bug问题。为了结局这个bug,我将两个ajax请求写入javascript的 when()函数,然后通过then()的回调函数进行调用,保证在两次ajax请求都结束以后再进行运算。

  

 $.when($.ajax({
        url: "/home/GetProduct",
        dataType: "JSON",
        type: "GET",
        success: function (data) {
            alert(JSON.stringify(data));
        }
    }),$.ajax({
        url: "/home/GetProduct2",
        dataType: "JSON",
        type: "GET",
        success: function (data) {
            alert(JSON.stringify(data));
        }
    })
).done(function (data) { alert(data[0].Name); })
.done(
function (data) { alert(data[1].Name); })
.fail(
function () { alert("程序出现错误!"); })
.then(
function (data) { alert("程序执行完成"); });

 

以上是关于flutter 同时执行多个异步请求回调的主要内容,如果未能解决你的问题,请参考以下文章

js 多个异步 的并发控制

Ajax(jquery) 同时处理多个异步请求

详解Ajax请求——多个异步请求的执行顺序

多个异步请求调用一个回调函数

在 dispatch_group_async 点,它在执行带有回调的异步任务时认为任务已完成

利用Promise实现数据多个请求加载完成时执行某个方法