关于异步async的一点小理解

关于异步async的一点小理解,第1张

关于异步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')
然后将其余的任务交给第三方处理,自己等待结果就好了

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5700650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存