繁体   English   中英

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

[英]How to use async await function object in Javascript?

说我有一个功能对象 -

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

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

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

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

await setObj(2,3);

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

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

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

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();

在对象的属性中使用相同的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);
})();

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

您可以简单地将async关键字放在任何函数上,不仅是函数声明,还包括函数表达式和对象的方法。 例如:

作为对象的方法:

const Object = {
    async asyncFunction() {
        await MyExamplepromise
    }
}

作为变量:

const myFunc = async function () { await MyExamplepromise }

// this is how execute the function expression
// first () operator to execute, and use .then get access the resolved value
myFunc().then((val) => { console.log(val) })

另请注意,异步函数返回一个promise,该promise将使用async函数返回的值进行解析,或者在异步函数中抛出未捕获的异常时被拒绝。

使用箭头功能也可以

const myObject = {
   myFunc: async () => {
     await myResultHere
   }
}

使用此:由于该函数是异步函数,它将异步运行。 如果你想用await运行它,你将不得不在异步函数中使用它

const useFunc = async () => {
   const res = await myObject.myfunc();
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM