码迷,mamicode.com
首页 > Web开发 > 详细

Nodejs异步编程

时间:2020-05-10 01:28:28      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:turn   tms   api   catch   bsp   utf8   依次   promise   嵌套   

Node.js异步编程
同步API:只有当前API执行完成后,才能继续执行下一个API;
         异步API:当前API的执行不会阻塞后续代码的执行。

   区别:同步API可以从返回值中拿到API执行结果,异步不行。

在异步API中使用回调函数获取执行结果:
function getMsg(callback) {
    setTimeout(function () {
       callback({
           msg:‘ALOHA‘
       })
    },2000)
}

getMsg(data => console.log(data))

     技术图片

 

 

    区别:执行顺序

同步:从上到下依次执行,前面代码会阻塞后面代码的执行。
异步:不会等待API执行完成后再向下执行代码。
 

Promise
Promise出现的目的是解决Node.js异步编程中回调地域的问题(即嵌套多重函数)。

基本使用方法
let promise = new Promise((resolve,reject) =>{

    setTimeout(()=>{

       if(true){

           resolve({name:‘张三‘})

       }else {

           reject(‘失败了‘)

       }

    },2000)

});

promise.then(result=>console.log(result))
.catch(error =>console.log(error));
分离异步API执行和错误分离
获取本地文件夹内容:const fs = require(‘fs‘);

let promise = new Promise((resolve,reject) =>{

    fs.readFile(‘./1.txt‘,‘utf8‘,(error,result) =>{

        if(error != null){

            reject(error)

        }else {

           resolve(result);

        }

    })

})

promise.then((result) =>{   //then,执行resolve(result)=执行promise.then

    console.log(result)

})

.catch((error) =>{          //链式编程

    console.log(error)

})
项目实战
const fs = require(‘fs‘);

/* //callbackhell
fs.readFile(‘./1.txt‘,‘utf8‘,(err,result1) =>{
console.log(result1);
fs.readFile(‘./2.txt‘,‘utf8‘,(err,result2)=>{
console.log(result2);
fs.readFile(‘./3.txt‘,‘utf8‘,(err,result3) =>{
console.log(result3);
})
})
})*/
function p1(){
return new Promise ((resolve, reject) => {
fs.readFile(‘./1.txt‘,‘utf8‘,(err, result) => {
resolve(result)
})
});
}
function p2(){
return new Promise((resolve,reject)=>{
fs.readFile(‘./2.txt‘,‘utf8‘,(err,result)=>{
resolve(result);
})
})
}
function p3(){
return new Promise((resolve,reject)=>{
fs.readFile(‘./3.txt‘,‘utf8‘,(err,result)=>{
resolve(result);
})
})
}
p1().then((r1)=> {
console.log(r1);
return p2();
})
.then((r2)=>{
console.log(r2);
return p3()
})
.then((r3)=>{
console.log(r3)
})

Nodejs异步编程

标签:turn   tms   api   catch   bsp   utf8   依次   promise   嵌套   

原文地址:https://www.cnblogs.com/kmfc7/p/12861371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!