栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于异步async的一点小理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于异步async的一点小理解

最简单的方法理解async

这种想法是使用celery时得来的本身想拿python代码来举例,但还是使用js吧核心思想是所有的异步任务交给(伪)第三方处理,而交给第三方后自己的主线程处于空闲阶段,所以又可以做别的事情了

const async_fun = async ()=>{ return '异步任务的结果999'} //定义一个简单的异步任务
const async_start =  async ()=>{
    console.log('我要使用异步了')
    const data = await async_fun() //主线程把异步任务交给第三方了,第三方做完后会给我的变量data(异步任务需要await修饰取返回值)
    console.log(data)  //打印第三方交给主线程的结果(结果必须是第三方完成任务之后才有的)
    console.log('所有的任务终于完成了')
}

async_start()//使用了异步任务
console.log('我不是异步,但是我在得到结果前打印了出来')//我是在主线程把任务交给第三方做了之后,主线程没事情做所以来执行我了
代码的结果:
我要使用异步了
我不是异步,但是我在得到结果前打印了出来
异步任务的结果999
所有的任务终于完成了

其中这两句代码

async_start()
console.log

可以理解为

console.log('我要使用异步了')
const data = await async_fun() 
console.log(data)
console.log('所有的任务终于完成了')任务一
--------------------------------------------
console.log('我不是异步,但是我在得到结果前打印了出来') 任务二
每一个独立的任务都必须是从上到下按顺序运行的,但是将任务交给第三方后,可以去执行别的任务

所以我将代码修改一下

const async_fun = async ()=>{
//-------------我在这里加了一个第三方不能做的事情,需要我自己做    
    console.log('需要我自己做的任务1234')
//终于做完了,我可以去等待第三方把结果给我了
    return '异步任务的结果999'} 
const async_start =  async ()=>{
    console.log('我要使用异步了')
    const data = await async_fun() 
    console.log(data)  
    console.log('所有的任务终于完成了')
}

//然后
async_start()
console.log('我不是异步,但是我在得到结果前打印了出来')

输出结果:
我要使用异步了
需要我自己做的任务1234
我不是异步,但是我在得到结果前打印了出来
异步任务的结果999
所有的任务终于完成了

最后两句代码还有有必要翻译下

console.log('我要使用异步了')
const data = await async_fun() 
console.log(data)
console.log('所有的任务终于完成了')任务一
--------------------------------------------
console.log('我不是异步,但是我在得到结果前打印了出来') 任务二
但不同的是我的异步任务不能直接交给第三方,里面需要

但是呢async_fun() 有了变化

需要先   
console.log('需要我自己做的任务1234')
然后将其余的任务交给第三方处理,自己等待结果就好了
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/700530.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号