饥人谷_李栋
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('报错了')
}