【发布时间】:2016-11-14 04:58:39
【问题描述】:
我只想等待一个进程完成,不想让函数异步。
请参阅下面的代码。
我不得不使 getUserList 异步,因为函数中有一个 await 关键字。因此,我还必须像“await UsersService.getUserList”一样编写来执行该方法,并且我还必须使父函数异步。那不是我想做的。
import xr from 'xr' //a package for http requests
class UsersService {
static async getUserList() {
const res = await xr.get('http://localhost/api/users')
return res.data
}
}
export default UsersService
import UsersService from './UsersService'
class SomeClass {
async someFunction() { //async again!!
const users = await UsersService.getUserList() //await again!!
}
}
【问题讨论】:
-
因为没有
async,函数是同步的,因此 - 它保证完成它的主体执行并返回结果。 -
"我还必须让父函数异步" --- 你可以改用 Promise。
-
//await again!!--- 当然,如果它是异步的,你需要等待它完成。 -
await 表示同步对吗?所以 getUserList 方法对我来说应该是同步的。
-
"await 表示同步对吧?所以 getUserList 方法对我来说应该是同步的" --- 不,它的意思是“我们正在异步调用一个函数并且我们自己变得异步,因为我们需要等待结果”
标签: javascript async-await babeljs ecmascript-next