首页前端开发其他前端知识Node.Js异步编程是什么,异步编程问题如何处理

Node.Js异步编程是什么,异步编程问题如何处理

时间2024-03-26 12:26:03发布访客分类其他前端知识浏览671
导读:这篇文章给大家分享的是“Node.Js异步编程是什么,异步编程问题如何处理”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“Node.Js异步编程是什么,异步编程问题如何处理”吧。...
这篇文章给大家分享的是“Node.Js异步编程是什么,异步编程问题如何处理”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“Node.Js异步编程是什么,异步编程问题如何处理”吧。

首先理解什么是异步编程

含义:

  • 有异步肯定会有同步

  • 凡是回调函数存在的,都是异步代码

  • 先执行同步代码,看到异步代码后,将异步代码放到异步代码执行区(先不执行)

  • 继续执行同步代码,当所有的同步代码执行结束后,在执行异步代码

异步代码案例:

console.log('1');
    
setTimeout(()=>
{
    
	console.log('2秒后再执行...');

}
    ,2000);
    
console.log('end');
    

程序执行完毕后的输出结果:
1
恩德
2秒后再执行…

总结:代码会在执行中会依次执行,但执行到回调函数,就会把回调函数放入异步代码执行区,先不执行,如果代码执行完后,再去依次执行放入异步代码执行区。

同步代码行案例:

for(let i=0;
    i10;
i++){
    
	console.log(i);

}
    
console.log('end');
    

程序执行完毕后的输出结果:
0123456789
end
总结:同步代码,for循环无论执行多久,下面代码都要等待它执行完毕后才会执行。

2.为什么有异步编程

nodejs 特点是单线程、异步、非阻塞,如果代码逻辑涉及到多个回调,就会出现非常可怕的代码,不利于后期的维护。

而异步编程的作用就是提高效率,现在对程序越来越大,CPU和内存对压力也越来越大,异步可以让电脑同时处理多个事务,所以需要异步编程。

3.如何处理异步编程出现的问题

在我们项目当中,会出现一些问题,比如,拿不到值,是undefined,是因为异步编程。
解决方案:回调函数嵌套、 Promise、 await、async语法糖 变成同步

现在文件夹里有1,2,3三个txt文件,我们需要读取这三个文件,如果直接读取第一遍可能顺序对第二遍就会出现顺序混乱的情况,所以我们需要处理异步的问题,让他按顺序执行

使用回调函数嵌套代码:

const fs=require('fs')
const path =require('path')
let p1=path.join('1.txt')
let p2=path.join('2.txt')
let p3=path.join('3.txt')
fs.readFile(p1,'utf8',(err,data)=>
{
    
    if(err) throw err
    console.log(data)
    fs.readFile(p2,'utf8',(err,data)=>
{
    
        if(err) throw err
        console.log(data)
        fs.readFile(p3,'utf8',(err,data)=>
{

            if(err) throw err
            console.log(data)
        }
)
    }
)
}
)

使用Promise代码:

// new promise 的作用:让异步代码马上执行
const fs=require('fs')
function readFile(path){
    
    return new Promise((resolve,reject)=>
{
    
        fs.readFile(path,'utf8',(err,data)=>
{

            resolve(data)
        }
)
    }
)
}
    
let p1=readFile('1.txt')
let p2=readFile('2.txt')
let p3=readFile('3.txt')
p1.then(result=>
{

    console.log(result)
    return p2
}
    ).then(result=>
{

    console.log(result)
    return p3
}
    ).then(result=>
{

    console.log(result)
    return p3
}
    )

还可以使用 await、async语法糖 代码:

const path=require('path')
const fs=require('fs')
let p1=readFile('1.txt')
let p2=readFile('2.txt')
let p3=readFile('3.txt')
var readfile=(path)=>
{
    
    return new Promise((resolve,reject)=>
{
    
        fs.readFile(path,'utf8',(err,data)=>
{

            resolve(data)
        }
)
    }
)
}


async function exec() {
    
    await readfile(p1).then(result =>
     console.log(result))
    await readfile(p2).then(result =>
     console.log(result))
    await readfile(p3).then(result =>
 console.log(result))
}
    
exec()



感谢各位的阅读,以上就是“Node.Js异步编程是什么,异步编程问题如何处理”的内容了,通过以上内容的阐述,相信大家对Node.Js异步编程是什么,异步编程问题如何处理已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Node.Js异步编程是什么,异步编程问题如何处理
本文地址: https://pptw.com/jishu/653498.html
ES6中的class类的知识点有哪些? 用PHP怎样编写一个四则运算器?

游客 回复需填写必要信息