首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在dart中使用async/wait不等待http包

在Dart中使用async/await不等待http包时,可以通过使用Completer来实现等待http请求的完成。Completer是Dart中的一个类,用于创建一个Future对象,并在适当的时候手动完成该Future。

下面是一个示例代码,演示了如何在Dart中使用async/await来等待http请求的完成:

代码语言:txt
复制
import 'dart:async';
import 'package:http/http.dart' as http;

void main() async {
  // 创建一个Completer对象
  Completer completer = Completer();

  // 发起http请求
  http.get(Uri.parse('https://example.com')).then((response) {
    // 请求完成时,手动完成Completer
    completer.complete(response.body);
  });

  // 等待Completer的Future完成
  String responseBody = await completer.future;

  // 打印http请求的结果
  print(responseBody);
}

在上面的代码中,我们首先创建了一个Completer对象,然后发起了一个http请求。当请求完成时,我们手动调用completer.complete()方法来完成Completer的Future。接着,我们使用await关键字等待Completer的Future完成,并将结果赋值给responseBody变量。最后,我们打印了http请求的结果。

需要注意的是,上述示例中使用的是Dart官方的http包。如果你需要使用腾讯云相关的产品,可以参考腾讯云提供的Dart SDK文档,选择适合的产品和相关的库来进行开发。

参考链接:

  • Dart官方文档:https://dart.dev/
  • 腾讯云Dart SDK文档:https://cloud.tencent.com/document/sdk/Dart
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

# Event loop

# Event loop ​ dart的事件轮询包含两种事件队列:MicroTask和 EventTask,其中经常使用的属于EventTask队列,MicroTask并不常用,也推荐使用。...# MicroTask(推荐使用) 创建MicroTask有两种方法: //第一种:使用全局静态方法创建 scheduleMicrotask((){ print('this is a MicroTask...# await/async async标记一个方法将要返回一个Future对象,该对象是可以被await的,dart异步的一个重要标识就是await,每当遇到一个await时,dart都会等待await...下面这段代码演示Timer也要写入EventTask队列才能运行: import 'dart:async'; void main() async { //立即执行 Timer.run(()...dart是一个单线程程序,执行耗时的操作是会导致线程卡住,尤其Flutter上会导致ui卡顿。

1.6K30

Dart 语言异步编程之Future

Dart 异步编程 Dart 的事件循环 调度任务 延时任务 Future 详解 创建 Future 注册回调 async 和 await Dart 异步编程 编程的代码执行,通常分为同步与异步两种。...简单说就是某个单线程存在一个事件循环和一个事件队列,事件循环不断的从事件队列取出事件来执行,这里的事件就好比是一段代码,每当遇到耗时的事件时,事件循环不会停下来等待结果,它会跳过耗时事件,继续执行其后的事件...调度任务 注意,以下调用的方法,都定义dart:async。...((res){ print("async task complete"); }).catchError((e){ print(e); }); 还可以使用静态方法wait 等待多个任务全部完成后回调...async 和 await Dart1.9加入了async和await关键字,有了这两个关键字,我们可以更简洁的编写异步代码,而不需要调用Future相关的API 将 async 关键字作为方法声明的后缀时

1.6K21
  • Dart 异步

    接下来我们来仔细分析: 1. ioslate Dart是基于单线程模型的语言。Dart也有自己的进程机制 – isolate。...Dart语言中,所有的Dart代码都运行在某个isolate,代码只能使用所属isolate的类和值。不同的isolate可以通过port发送message进行交流。...因为如果微任务很多的话,就会造成事件队列排上对,会阻塞任务队列的执行 创建微服务 可以通过async下的schedlueMicrotask来创建一个微任务: import "dart:async";...async 描述一个执行异步操作的方法 await 表示一直等待异步方法返回结果,才继续往后执行 一般一个async的函数会返回一个Future //HTTP的get请求返回值为Future<String...Dart,有await标记的运算,其返回结构都是一个Future对象,所以我们可以这样写: String data; getData() async { data = await http.get

    1.6K20

    Flutter异步与线程详解

    一:前言 - 关于多线程与异步       关于 Dart,我相信大家都知道Dart是一门单线程语言,这里说的单线程并不是说Dart没有或着不能使用多线程,而是Dart的所有API默认情况下都是单线程的...二:事件队列       这个和iOS比较类似,Dart的线程也存在事件循环和消息队列的概念,Dart的线程包含一个事件循环以及两个事件队列,我们先说清楚两个事件队列,再来整理它的事件循环或着说是消息循环机制是什么样子的...三:异步        异步调用中有三个关键词 【async】【await】【Future】,其中async和await/Future是一起使用的,Dart可以通过async和await进行一个异步操作...async:异步函数标识,一般与await和Future配合使用。        ...(),我们简单的看一个,比如Future.wait的用法,假设我们有这个一个使用场景,等待在三个Future执行完之后我们还需要执行另外一个Future,这时候我们该怎么处理,下面的demo给了我们处理的方式

    1.8K31

    Dart的异步操作

    但是因为Dart是单线程的所以无论你等待饭来的时间多长,在这个操作没有完成之前他都不会去执行下面的操作,这样就不美好了啊,我等吃饭的时间内什么也做不了了啊。 上面的例子就是非异步操作引起的问题。...Flutter我们可以使用如下两种方式来获取Future。...使用Future APi 使用async和await (Dart1.9后支持) 还是以上面的场景为例,我们先借助于Future APi来实现异步效果。...then()链接函数调用 当Future-returning函数需要按顺序运行时,请使用链式then() 调用: 等待多个Future以完成使用Future.wait() 如果功能的执行顺序不重要...小结 ---- Dart是单线程的变成语言 使用Future可以是同步操作异步化 Future可以使用async和await来回去 Future可以处理链式调用和多个Future同时返回结果 点击左下角阅读原文

    1.6K20

    Dart 相关语法笔记

    (5); } 我们可以使用as关键字为我们自定义的重命名… 2.2 控制显隐部分导入 dart中支持引入的中被隐藏的对象无法被外界访问 import 'package:toly/utils/color_utils.dart...异步 Dart 是一个单线程的语言,遇到有延迟的操作(IO/网络请求)时,线程按照顺序执行的运算就会阻塞,UI卡顿甚至AAR,Dart我们可以将它放到延迟运算的队列 3.1 async和await...Dart,有await标记的运算,其返回结构都是一个Future对象,所以我们可以这样写: String data; getData() async { data = await http.get...函数内部使用 调用async函数必须使用await关键字 3.2 Future 上面我们提到了Future,那么什么是Future?...Dart是基于单线程模型的语言。Dart也有自己的进程机制 – isolate。

    50620

    Dart的异步编程——Future、async和await

    要在Dart执行异步操作,可以使用Future类和async和await关键字。...await会等待Future执行结束后,才会继续执行后面的代码。 关键字async和await是Dart语言异步支持的一部分。 异步函数即在函数头中包含关键字async的函数。...注意:Dartasync/await都只是一个语法糖,编译器或解释器最终都会将其转化为一个Promise(Future)的调用链。...; 执行结果: testFuture()执行之后打印。 第1秒执行 第2秒执行 第3秒执行 # Future.wait 等待多个Future完成,并收集它们的结果。...同时,介绍了一些关于Dart Future的一些基础使用和高级用法,同时穿插了一些使用实例,用来帮助大家更好的来理解Dart的异步操作。

    2.2K51

    Dart的语法详解系列篇(四)-- 泛型、异步、库等有关详解九、泛型(Generics)十、库和可见性十一、异步支持十二、Isolates十三、生成器(Generators)十四、类型定义十五、元数据

    每个Dart应用程序都是一个库,即使它不使用library指令。可以使用来分发库。 (一)使用使用import指定一个库的命名空间如何在另一个库汇总使用。...(二)使用async和await 使用async和await异步的代码,但它看起来很像同步代码。例如,这里有一些代码await 用于等待异步函数的结果。...如果在使用await时遇到编译时错误,请确保awaitasync函数。...注意:使用await for之前,请确保它使代码更清晰,并且您确实希望等待所有Stream的结果。.../dart-isolate-library.html 使用isolate 需要先导入:import 'dart:isolate'; 下面来一个简单的示例代码: // 另一个隔离区()同步读取

    3.8K40

    上手指南 | Dart,随用随查

    Unicode 字符) Dart , Rune 用来表示字符串的 UTF-32 编码字符 表示 Unicode 编码的常用方法是, \uXXXX, 这里 XXXX 是一个4位的16进制数。...Symbol Symbol 对象表示 Dart 程序声明的运算符或者标识符,你一般不会使用到他 Null-aware Dart的Null-aware来自于Dart 1.12正式版本 , 存在即是合理...词法闭即一个函数对象。即使函数的调用在他原始的作用域之外,依然能访问他词法作用域内的变量 /// 返回一个函数,返回的函数参数与 [addBy] 相加。...对象,可以使用 then 添加回调函数 await :后面是一个 Future,表示等待改异步任务的完成,异步完成之后才会继续往下走,await 必须出现在 async 的内部 void main(...getNetData ,拿到两个结果进行拼接,然后一起返回 返回值会被包装在一个 Futter 调用处就可以使用 them 直接拿到结果 --- > 参考文献:官方文档,Flutter

    1.8K50

    上手指南 | Dart,随用随查

    Unicode 字符) Dart , Rune 用来表示字符串的 UTF-32 编码字符 表示 Unicode 编码的常用方法是, \uXXXX, 这里 XXXX 是一个4位的16进制数...Symbol Symbol 对象表示 Dart 程序声明的运算符或者标识符,你一般不会使用到他 Null-aware Dart的Null-aware来自于Dart 1.12正式版本 , 存在即是合理...词法闭即一个函数对象。即使函数的调用在他原始的作用域之外,依然能访问他词法作用域内的变量 /// 返回一个函数,返回的函数参数与 [addBy] 相加。...对象,可以使用 then 添加回调函数 await :后面是一个 Future,表示等待改异步任务的完成,异步完成之后才会继续往下走,await 必须出现在 async 的内部 void main...getNetData ,拿到两个结果进行拼接,然后一起返回 返回值会被包装在一个 Futter 调用处就可以使用 them 直接拿到结果 --- > 参考文献:官方文档,Flutter

    1.8K70

    Flutter 网络请求框架封装详解

    Flutter 请求网络的三种方式 flutter 请求网络的方式有三种,分别是 Dart 原生的网络请求 HttpClient、第三方网络请求 http以及 Flutter 的 Dio。...Dart 原生的网络请求 HttpClient 实现 Dart 获取网络数据的请求,一般我们需要以下几个步骤: step 1: 原生的网络请求时不需要修改 pubspec.yaml 文件的,我们只需要在使用的地方引入所需就可以了...库 http step 1:pubspec.yaml 添加依赖 http: ' =0.11.3+12' step 2: 使用的地方导 import 'package:http/http.dart'...的 json 实体类插件 FlutterJsonBeanFactory Android 开发,有 GsonFormat 这个插件来讲 json 数据自动转化成 Bean;那么 Flutter...- Browse Respositories 搜索 FlutterJsonBeanFactory step 2:创建实体类,指定目录下: New - dart bean class File

    5.3K40

    AngularDart4.0 英雄之旅-教程-08HTTP

    进行更改时,请通过重新加载浏览器窗口来保持运行。 提供HTTP服务 您将使用Dart http软件的客户端类与服务器进行通信。...Pubspec更新 通过添加Dart http和stream_transform软件来更新软件相关性: ?...注册HTTP服务 应用程序可以使用BrowserClient之前,您必须将其注册为服务提供者。 您应该可以从应用程序的任何位置访问BrowserClient服务。...内存的Web API服务,如下所示,使用http库MockClient类实现。 所有的http客户端实现共享一个共同的客户端接口,所以你将有应用程序使用客户端类型,以便您可以自由切换实现。...终点直道 你旅程的尽头,你已经完成了很多。 您添加了必要的依赖关系,以应用程序中使用HTTP。 您重构了HeroService以从Web API加载英雄。

    11K30

    Flutter--Dart基础语法(四)异步

    Dart的异步操作 Dart的异步操作主要使用Future以及async、await。...一旦有了这个关键字,那么这个操作就会等待Future.delayed的执行完毕,并且等待它的结果。 修改后执行代码,会看到如下的错误: 错误非常明显:await关键字必须存在于async函数。...这是因为如果微任务非常多,就会造成事件队列排上队,会阻塞任务队列的执行(比如用户点击没有反应的情况); 说道这里,你可能已经有点凌乱了,Dart的单线程,代码到底是怎样执行的呢?...如何创建微任务 开发,我们可以通过dartasync下的scheduleMicrotask来创建一个微任务: import "dart:async"; main(List args...) { scheduleMicrotask(() { print("Hello Microtask"); }); } 开发,如果我们有一个任务希望它放在Event Queue依次排队

    1.4K20

    「快速上手Flutter开发系列教程」之线程和异步UI

    Dart 的单线程模型,并不意味着你写的代码一定要作为阻塞操作的方式运行,从而卡住 UI。相反,可以使用 Dart 语言提供的异步工具,例如 async / await ,来实现异步操作。... Flutter 使用流行的 http package 做网络请求非常简单。它把你可能需要自己做的网络请求操作抽象了出来,让发起请求变得简单。...要使用 http pubspec.yaml 添加如下依赖: dependencies: ......http: ^0.12.0+1 发起网络请求, http.get() 这个 async 方法中使用 await : import 'dart:convert'; import 'package:flutter... iOS ,在后台运行耗时任务时我们通常会使用 UIProgressView。 Android ,在后台运行耗时任务时我们通常会使用 ProgressBar。

    2.2K20

    dart系列之:dart的异步编程

    简介 熟悉javascript的朋友应该知道,ES6引入了await和async的语法,可以方便的进行异步编程,从而摆脱了回调地狱。dart作为一种新生的语言,没有理由继承这种优秀的品质。...很自然的,dart也有await和async语言,一起来看看吧。 为什么要用异步编程 那么为什么要用异步编程呢? 只用同步不能够解决吗?...javaFuture表示的是线程的执行结果。dartFuture表示的是一个异步执行的结果。 Future有两种状态:uncompleted 或者 completed。...总结 以上就是dartasync和await的用法。...本文已收录于 http://www.flydean.com/12-dart-async/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

    1.3K10
    领券