同步、异步

饥人谷_李栋

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('报错了')
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 12,798评论 1 56
  • 异步编程一直是JavaScript 编程的重大事项。关于异步方案, ES6 先是出现了 基于状态管理的 Promi...
    Jeremy_young阅读 17,161评论 2 44
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 7,753评论 0 5
  • //本文内容起初摘抄于 阮一峰 作者的译文,用于记录和学习,建议观者移步于原文 概念: 所谓的Promise,...
    曾经过往阅读 5,023评论 0 7
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,258评论 0 2

友情链接更多精彩内容