如何在Javascript中使用异步等待函数对象?

boz*_*mob 8 javascript async-await babeljs ecmascript-next

说我有一个功能对象 -

setObj : function(a,b){
    obj.a = a;
    obj.b = b;
}
Run Code Online (Sandbox Code Playgroud)

如果我必须在此函数对象上使用async&await,我该怎么做?

如果在功能(功能方式)中写入相同的内容,请说 -

async function setObj(a,b){
    obj.a = a;
    obj.b = b;
}

await setObj(2,3);
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,如果是函数对象,我该怎么办呢?

Ben*_*rch 11

如果我理解你的问题,你可以async在方法声明前面使用关键字:

let obj = {};
let myObj = {
    async setObj(a,b) {
        obj.a = a;
        obj.b = b;
    }
}
Run Code Online (Sandbox Code Playgroud)

http://tc39.github.io/ecmascript-asyncawait/#async-methods

UPDATE

您不能await在异步功能之外使用.为了使用它,你必须将该调用包装为await setObj(2, 3):

async function consoleLog() {
    await myObj.setObj(2, 3);
    console.log(obj.a + obj.b);
}

consoleLog();
Run Code Online (Sandbox Code Playgroud)

  • 在你的Gist中看到我的评论,你使用的是"await"关键字错误,它必须在异步函数中. (2认同)

Han*_*ans 7

async在对象的属性中使用相同的关键字:

(async function () {
  var obj = {};
  console.log("hello");

  let setObj = async function (a,b){
    obj.a = a;
    obj.b = b;
  };

  await setObj(2,3);

  console.log(obj.a+obj.b);
})();
Run Code Online (Sandbox Code Playgroud)

请注意,整个代码都包含在异步自调用函数中.这是必需的,否则await setObj将无法正常运行.