【发布时间】:2022-01-25 23:18:52
【问题描述】:
我有一个关于异步/等待执行的问题。
示例代码
async firstMethod(){
new Promise((resolve, reject)) => {
setTimeout(() => {
resolve("test1");
}, 3000);
});
}
async secondMethod() {
new Promise((resolve, reject)) => {
setTimeout(() => {
resolve("test2");
}, 1000);
});
}
await firstMethod();
await secondMethod();
所以,当执行这两个方法时,会得到如下结果。
test2
test1
但是,如果附加了return,结果值如下。
async firstMethod(){
return new Promise((resolve, reject)) => {
setTimeout(() => {
resolve("test1");
}, 3000);
});
}
async secondMethod() {
return new Promise((resolve, reject)) => {
setTimeout(() => {
resolve("test2");
}, 1000);
});
}
await firstMethod();
await secondMethod();
test1
test2
这是为什么呢?如果您能解释一下,我将不胜感激。
【问题讨论】:
-
因为没有返回,你的方法不会返回等待的承诺。他们返回一个未定义的承诺,与
new Promises 无关。 -
我反对这种行为(
awaiton non-promises automaticallyPromise.resolveing)并输了。 -
帖子显示了两组结果。您可以编辑帖子以显示它们的制作地点和方式吗?
标签: javascript node.js async-await promise