如何在 Javascript 中使用 async await 函数对象?
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
关键字
(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
关键字:
let obj = {};
let myObj = {
async setObj(a,b) {
obj.a = a;
obj.b = b;
}
}
见http://tc39.github.io/ecmascript-asyncawait/#async-methods
更新
您不能在异步函数之外使用 await
。为了使用它,您必须将该调用包装到 await setObj(2, 3)
:
async function consoleLog() {
await myObj.setObj(2, 3);
console.log(obj.a + obj.b);
}
consoleLog();
您可以简单地将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) })
另请注意,异步函数 returns 承诺将使用异步函数返回的值进行解析,或者使用从异步函数中抛出的未捕获异常来拒绝。
也可以使用箭头函数
const myObject = {
myFunc: async () => {
await myResultHere
}
}
使用这个:由于该函数是一个异步函数,它将运行异步。如果你想 运行 this with await,你必须在异步函数中使用它
const useFunc = async () => {
const res = await myObject.myfunc();
}
假设我有一个函数对象-
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
关键字
(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
关键字:
let obj = {};
let myObj = {
async setObj(a,b) {
obj.a = a;
obj.b = b;
}
}
见http://tc39.github.io/ecmascript-asyncawait/#async-methods
更新
您不能在异步函数之外使用 await
。为了使用它,您必须将该调用包装到 await setObj(2, 3)
:
async function consoleLog() {
await myObj.setObj(2, 3);
console.log(obj.a + obj.b);
}
consoleLog();
您可以简单地将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) })
另请注意,异步函数 returns 承诺将使用异步函数返回的值进行解析,或者使用从异步函数中抛出的未捕获异常来拒绝。
也可以使用箭头函数
const myObject = {
myFunc: async () => {
await myResultHere
}
}
使用这个:由于该函数是一个异步函数,它将运行异步。如果你想 运行 this with await,你必须在异步函数中使用它
const useFunc = async () => {
const res = await myObject.myfunc();
}