Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度及;异步/等待_Javascript_Angular_Asynchronous_Async Await - Fatal编程技术网

Javascript 角度及;异步/等待

Javascript 角度及;异步/等待,javascript,angular,asynchronous,async-await,Javascript,Angular,Asynchronous,Async Await,我在angular应用程序中使用以下内容: let getName = greenlet( async username => { let url = `https://api.github.com/users/${username}` let res = await fetch(url) let profile = await res.js

我在angular应用程序中使用以下内容:

let getName = greenlet( async username => {                     
    let url = `https://api.github.com/users/${username}`        
    let res = await fetch(url)                                  
    let profile = await res.json()                              
    return profile.name                                          
})                                                              

console.log(await getName('developit'));     
Angular似乎正在将“等待”改为“屈服”:


如何在Angular5应用程序中使用此选项?谢谢。

Babel将浏览器中的async/await更改为生成器函数,该函数使用
yield
关键字。只有在正确的环境下,收益才会起作用;具体而言,下一阶段将确保
产量
出现在生成器函数中(您可以阅读更多关于生成器的信息,但基本上它们是通过函数签名中的*来识别的,例如
函数*doSomething()

如果您没有正确管理
async
关键字,则不会创建生成器函数。Babel会将wait转换为生成器,但由于外部函数不是异步的,它不会创建生成器包装,因此会出现错误。某些IDE会在编译前报告此错误,但这就是您遇到的错误eeing的意思是

您提到这个console.log位于
ngOnInit
生命周期钩子中;该函数调用本身不是异步的。您可以用异步来修饰它,但我不建议这样做(它可以工作,但它实际上意味着什么?)。您可以尝试显式调用
async
函数,忽略返回的承诺:

ngOnInit() {
    this.someFunction();
}

async someFunction() {
    console.log(await getName('developit'));
}

现在我们假设,
greenlet
知道如何处理它所传递的异步函数(它解决了承诺吗?)

您的代码示例是否被另一个异步函数包围?否则,您不允许在console.log调用中使用wait。getName内部的逻辑看起来很好。它只是位于Ngonit生命周期钩子中。我猜有一些步骤可以将ES8传输到ES6。但是,实际上,传输程序应该在第一名。谢谢你提供的信息。我使用的软件包在这里: