小编Ahm*_*man的帖子

当循环在异步函数内部而不是相反时,为什么异步/等待正常工作?

我有三个片段是循环三次,而await在荷兰国际集团promise

在第一个代码段中,它按我的预期工作,并且i每个的值都递减await

let i = 3;

(async () => {
  while (i) {
    await Promise.resolve();
    console.log(i);
    i--;
  }
})();
Run Code Online (Sandbox Code Playgroud)

输出:

3
2
1
Run Code Online (Sandbox Code Playgroud)

在第二个中,的值i连续递减直到其达到零,然后await执行所有s。

let i = 3;

while (i) {
  (async () => {
    await Promise.resolve();
    console.log(i);
  })();
  i--;
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
0
0
Run Code Online (Sandbox Code Playgroud)

最后,这将导致Allocation failed - JavaScript heap out of memory错误并且不输出任何值。

let i = 3;
while (i) {
  (async () => {
    await Promise.resolve(); …
Run Code Online (Sandbox Code Playgroud)

javascript async-await es6-promise

16
推荐指数
2
解决办法
1172
查看次数

比较C中的两个char*和两个char []字符串

#include <stdio.h>

int main(){
    char a[] = "bar";
    char b[] = "bar";
    printf("%d\n", (a==b));

    char* x = "bar";
    char* y = "bar";
    printf("%d\n", (x==y));
 }  
Run Code Online (Sandbox Code Playgroud)

输出:

0 
1
Run Code Online (Sandbox Code Playgroud)

我知道我们无法使用==运算符比较C char数组,因为它比较了内存​​位置,但为什么它在第二种情况下有效呢?

c arrays string pointers

3
推荐指数
1
解决办法
611
查看次数

标签 统计

arrays ×1

async-await ×1

c ×1

es6-promise ×1

javascript ×1

pointers ×1

string ×1