根据上面的代码 这里貌似还是同步的

rustc 1.43.0 (4fb7144ed 2020-04-20)

use futures::executor::block_on;

type Song = fn();

async fn learn_and_song() {
    let sg:Song = learn_song().await;
    song(sg).await;
}

async fn learn_song() -> Song {
    println!("learn song");
    ||{
        println!("小星星")
    }
}

async fn song(song: Song) {
    song();
}

async fn dancing() {
    println!("dancing");
}

async fn performance() {
    let f1 = learn_and_song();
    let f2 = dancing();

    futures::join!(f1,f2);
}

fn main() {
    block_on(performance());
    // 这里的测试结果  貌似还是同步代码
}

运行结果

xxx@mv-ubuntu-006:~/Github/Re-learning-RUST/demo1$ cargo run
   Compiling demo1 v0.1.0 (/home/xxx/Github/Re-learning-RUST/demo1)
learn song
小星星
dancing

dancing 没有在 song前面

讨论数量: 1

async并不能帮你自动把程序变成异步的,它只是让你能够方便的await一个Future而已。如果Future内部本身就是同步实现的话。

1周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!