首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

同步、异步

2024-12-20 来源:化拓教育网

饥人谷_李栋

promise.reject("xxx")
主动报错

异常会返回给 下一个函数的 error

catch(()=>{
    
}) 是个语法糖 

等价于  .then(undefined,()=>{
    
})

ast是指抽象语法树?
lru是指缓存淘汰算法?

写函数的时候 你要搞清楚 接受什么 输出什么 然后再去想其他的

把你要做的事情 写成一个函数
这个函数 必须接受两个回调函数 成功回调、失败回调

你要做的事情 和 返回一个promise
怎么结合到一块呢 把你要做的事情 传给promise

怎么把做的事情的结果 给外面呢 如果成功了 就调用第一个函数
如果失败了 就调用第二个函数

这两个函数 等会儿 会有人给你的 这异步的事情你急什么急呢 promise会给你的

function buyFruit(){
    // let fn = (x,y) => {
    //  setTimeout(function(){
    //      x('apple')
    //  },10000)
    // })
    return new Promise((resolve,reject) => { //fn.call(undefined,success,error)
        setTimeout(function(){
            resolve('apple')
        },10000)
    })
}

var promise = buyFruit()
promise.then(()=>{console.log(1)},()=>{console.log(2)})

await 后面接一个 返回 promise 的函数

var result = await buyFruit()  

加 await 后 等这个 promise 被搞定了 成功了/失败了 之后 这个等于号才会执行
这个等于号 是个 异步的等于号
没搞定之前 不会执行 = 也不会执行 var

这一句执行完了 才会执行下一句 await 改变了 整个代码的执行顺序

你在声明的时候 就告诉我 这个函数 是同步的 还是异步的
如果一个函数里面有 await 就代表 它是个异步的操作
那就这样声明

async function fn(){
    var result = await buyFruit()
    return result
}

var s = fn() //这样的话 就不等了
var s = await fn();
console.log(2)

如果 buyFruit 报错呢

function buyFruit() {
    return Promise((resolve,reject)=>{
        setTimeout(()=>{
            reject.call()
        },10000)
    })
}

你必须 解决错误 

try{
    result = await buyFruit()
    cosole.log('没报错')
}catch(err){
    console.log('报错了')
}
显示全文