一个人如何创建语法糖来隐藏.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()
})()

09-16 02:02