4.1 服务端(处理内容:异步编程)

同步API,异步API定义
异步API返回值获取结果
多层异步API嵌套,按顺序执行,方式1es6
多层异步API嵌套,按顺序执行,方式2es7
将NodeJS,第三方API中异步函数包装

同步API,异步API定义

同步API定义:
1.通过返回值得到api结果
2.当前api执行完成后执行下一个api

异步API定义:
1.通过函数得到api结果,需要一定时间后得到api结果
2.异步API执行顺序相同于堆中执行方式一样
3.如果用同步API方式获取异步API得到的是undefined

异步API返回值获取结果

//异步编程:通过回调函数办法获取返回值
1.将回调函数作为参数传递进异步函数
2.异步函数内部调用回调函数
3.将异步函数执行结果以实参方式传递给回调函数
4.回调函数中的行参为异步函数处理结果

function f1(callback) {
    setTimeout(function () {
        callback("异步函数的执行结果")
        //1.调用回调函数
        //2.将异步函数的执行结果传递给回调函数中的行参
    }, 2000)
}
f1(function (data) { })
//1.调用异步函数
//2.行参为异步函数执行结果

多层异步API嵌套,按顺序执行,方式1es6

//回调地狱解决办法
function f1() {
    let promise = new Promise((resolve, reject) => {
        //resolve("异步函数执行结果")//成功:将异步函数执行结果传递出去
        //reject("执行结果失败提示信息")//失败:将失败文案传递出去
        fs.readfile(realpath, (error, result) => {
            if (error != null) {
                reject(error)
            }
            else if (error = null) {
                resolve(result)
            }
        })
    })
    return promise
}

f1().then(result1 => {
    consolu.log(result)
    return f2()    //用return f2()调用,进行回调地狱
}).then(result2 => {
    consolu.log(result)
    return f3()    //用return f2()调用,进行回调地狱
})

f1().catch(error => {
     consolu.log(error)
     return f2()    //用return f2()调用,进行回调地狱
})

多层异步API嵌套,按顺序执行,方式2es7

 //回调地狱解决办法  异步函数es7
async function lzy() {
    throw "错误信息"   //通过throw传递错误信息,throw执行后,与return一样,后续代码不能执行
}
var lzy = async () => { }

await lzy()
//1.异步函数默认返回值是promise对象
//2.promise对象内部存储return的值,
//3.await是顺序执行
//4.需要异步函数在外封装调用代码,此处没写

await lzy().then(function (data) { })  //dat参数为函数定义时return的值
await lzy().catch(function (err) { }) //获取错误信息err,就是throw后面的信息

NodeJS,第三方API中异步函数包装

//包装nodeJS中的三方模块方法     
var promisify = require("util").promisify   //引入util模块中的promisify方法
var readFile = promisify(fs.readFile)   //举例:将readFile方法进行改造

//依次执行 读取文件操作
async function run() {
    let r1 = await readFile("地址", "utf8")
    let r1 = await readFile("地址", "utf8")
    let r1 = await readFile("地址", "utf8")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值