Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.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
Angular “我应该关心吗?”;Zone.js不支持ES2017中的本机异步/等待。”;?_Angular_Zonejs - Fatal编程技术网

Angular “我应该关心吗?”;Zone.js不支持ES2017中的本机异步/等待。”;?

Angular “我应该关心吗?”;Zone.js不支持ES2017中的本机异步/等待。”;?,angular,zonejs,Angular,Zonejs,从Angular 9升级到10后,我在运行ng serve时收到以下警告: WARNING: Zone.js does not support native async/await in ES2017. These blocks are not intercepted by zone.js and will not triggering change detection. See: https://github.com/angular/zone.js/pull/1140 for more inf

从Angular 9升级到10后,我在运行ng serve时收到以下警告:

WARNING: Zone.js does not support native async/await in ES2017.
These blocks are not intercepted by zone.js and will not triggering change detection.
See: https://github.com/angular/zone.js/pull/1140 for more information.

(node:56581) ExperimentalWarning: The fs.promises API is experimental

有人知道这意味着什么,如果这是我应该关心的事情吗?

我同意。它可能不会更新您的组件,尤其是当您从某个API获取数据时。要解决这个问题,您可以将
tsconfig.base.json
文件中的目标更改回
es2015
接受的答案是正确的,但更具体地说,如果您以
es2015
为目标,您的
异步
函数将被传输到使用名为
\u waiter
的帮助函数,在引擎盖下使用了一个。由于上述链接中概述的技术限制,Zone.js可以挂接生成器函数并在其自己的微任务队列中管理其执行,但对于本机
wait
语句则不可能这样做

最终的结果是,如果您的函数是在区域A的上下文中执行的,那么您会点击
await
语句,当您的函数的下一行最终执行时,它将在根区域中。从这个问题:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
const test = async () => {
      console.log(Zone.current.name) // will output 'angular'
      await delay(100);
      console.log(Zone.current.name) // will output 'root'
    }

我相信这也意味着,任何允许您管理任务执行的区域功能(如角度测试助手
fakeAsync
/
tick
/
flush
)将无法正确识别“任务”(等待
等待
解决)为挂起。(当然,这就是为什么这首先是一个问题。)

这意味着,如果组件在异步方法中更新其值,可能会出现一个错误,但模板不会更新。如果您不太了解更改检测的工作原理,则应该注意此警告,但这将停止动态导入工作(如果使用),因为它仅在es2020中受支持