一个人如何创建语法糖来隐藏.then的某些复杂性?
给出以下代码:
const Fridge = {
async openDoor() {
const myCake = new Promise(resolve => {setTimeout(()=> {
console.log('door opened')
resolve (Object.create(Cake))
}, 2000)});
await myCake
return myCake
}
}
const Cake= {
eatCake(){ console.log ( 'yummy now I can eat my cake' ) }
}
const myFridge = Object.create(Fridge)
通常通过方言访问:
myFridge.openDoor().then(myCake=>{
myCake.eatCake()
... other code here .....
}) // complicated
是否可以创建一些糖来代替:
myFridge.openDoor().eatCake() //simple to understand .then implied
或更多,而不是:
myObject.myPromise.then(res=>{
let x = res
... do stuff with x
});
宁可
let x = myObject.myPromise.res
... so stuff with x
从异步函数返回的任何内容都应用于后续调用。并假定所有后续代码都位于.then中。 .then的关闭由封闭函数的结尾(类似于await当前的工作方式)确定。
最佳答案
您可以在括号中的await
调用之前使用myFridge.openDoor()
来形成表达式,然后链接.eatCake()
调用从.openDoor()
返回的对象的方法
(async() => {
(await myFridge.openDoor()).eatCake()
})()