Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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 Async/await是如何工作的,为什么在这里不工作_Javascript_Node.js - Fatal编程技术网

Javascript Async/await是如何工作的,为什么在这里不工作

Javascript Async/await是如何工作的,为什么在这里不工作,javascript,node.js,Javascript,Node.js,我一直在试图理解async/await是如何工作的,我只想让它等待,直到返回值。然而,我无法通过回调、承诺或async/await实现这一点。我做错了什么,为什么async/await不能像我期望的那样工作?(等待运行其他代码,直到此承诺得到解决) 许多问题都像这一个链接到“介绍页”。我都读过了,我明白他们在做什么,我只是不知道如何正确地写出来,因为我相信我做的每件事都是正确的,我只是错过了一些东西 console.log(“xcdcxcxvccvffdgfcd”) thing(); 异步函数

我一直在试图理解async/await是如何工作的,我只想让它等待,直到返回值。然而,我无法通过回调、承诺或
async/await
实现这一点。我做错了什么,为什么
async/await
不能像我期望的那样工作?(等待运行其他代码,直到此承诺得到解决)

许多问题都像这一个链接到“介绍页”。我都读过了,我明白他们在做什么,我只是不知道如何正确地写出来,因为我相信我做的每件事都是正确的,我只是错过了一些东西
console.log(“xcdcxcxvccvffdgfcd”)

thing();
异步函数thing(){
让c=等待其他事物();
console.log(“dfasfadsfdadasasdfa”+c)
}
异步函数otherthing(){
等待设置超时(函数(){
返回新承诺((解决、拒绝)=>{
设f=“reewwqfewfasgsadf”
返回(f);
})
}, 3000);

}
异步函数otherthing
没有
返回
语句,因此它将始终返回解析为
未定义
的承诺

等待设置超时(…)
没有任何意义。您只能
等待
承诺,并且
设置超时
不返回承诺


您需要明确地:

  • 其他内容中创建
    新承诺()
  • resolve()
    在传递给
    setTimeout
  • 返回
    来自
    其他事物的承诺

不要在传递给
setTimeout
的回调函数中创建承诺。这是毫无意义的。

异步函数otherthing
没有
return
语句,因此它总是返回解析为
未定义的承诺

等待设置超时(…)
没有任何意义。您只能
等待
承诺,并且
设置超时
不返回承诺


您需要明确地:

  • 其他内容中创建
    新承诺()
  • resolve()
    在传递给
    setTimeout
  • 返回
    来自
    其他事物的承诺

不要在传递给
setTimeout
的回调函数中创建承诺。这是毫无意义的。

你应该在
Promise
正文中移动
setTimeout
,然后在那里执行
resolve(f)


您应该将
setTimeout
移动到
Promise
主体内,然后在那里执行
resolve(f)


您必须从
otherthing
函数,而不是从
setTimeout
回调返回
newpromise
。您应该构造承诺,在其执行器回调中启动异步操作(
setTimeout
),然后异步
resolve()
reject()
承诺

function otherthing() {
  return new Promise((resolve, reject) => {
    setTimeout(function(){
      let f = "rerewwqfewfasgsadf"
      resolve(f);
    }, 3000);
  });
}

对于本质上只是
setTimeout
周围的承诺包装的函数,这里不需要任何
async
/
wait
。另请参见。

您必须
其他
函数返回
新承诺
,而不是从
设置超时
回调返回。您应该构造承诺,在其执行器回调中启动异步操作(
setTimeout
),然后异步
resolve()
reject()
承诺

function otherthing() {
  return new Promise((resolve, reject) => {
    setTimeout(function(){
      let f = "rerewwqfewfasgsadf"
      resolve(f);
    }, 3000);
  });
}

对于本质上只是
setTimeout
周围的承诺包装的函数,这里不需要任何
async
/
wait
。另请参见。

Async/await与返回承诺的函数一起工作。您的
otherthing
函数不返回任何内容

您可以通过返回正在实例化的承诺来修复代码,如下所示:

thing();
异步函数thing(){
让c=等待其他事物();
console.log(“dfasfadsfdadasasdfa”+c)
}
函数otherthing(){
返回新承诺((解决、拒绝)=>{
setTimeout(函数(){
设f=“reewwqfewfasgsadf”
决议(f);
}, 3000)
});

}
Async/await与返回承诺的函数一起工作。您的
otherthing
函数不返回任何内容

您可以通过返回正在实例化的承诺来修复代码,如下所示:

thing();
异步函数thing(){
让c=等待其他事物();
console.log(“dfasfadsfdadasasdfa”+c)
}
函数otherthing(){
返回新承诺((解决、拒绝)=>{
setTimeout(函数(){
设f=“reewwqfewfasgsadf”
决议(f);
}, 3000)
});

}
因为
setTimeout
不返回承诺
otherthing
不返回任何内容。因为
setTimeout
不返回承诺
otherthing
不返回任何内容。