[英]async/await not working in NodeJS, it doesn't wait
I'm calling 2 REST API endpoints using Axios in NodeJS.I'm trying to make that the code executes line by line but the second ( viewProfile()
) function doesn't wait for generateId();
我在 NodeJS 中使用 Axios 调用 2 REST API 端点。我试图让代码逐行执行,但第二个( viewProfile()
)function 不等待generateId();
const generateId = async (data) => {
const options = optionsBuilder("post","profile", data);
try {
const response = await axios(options);
id = response.data.id;
console.log(id);
} catch (error) {
console.error(error);
}
}
const viewProfile = async (profileId) => {
console.log('Test 2', profileId);
const path = `blog/${profileId}`;
const options = optionsBuilder("get", path);
try {
const response = await axios(options);
console.log(response.data);
} catch (error) {
console.log(error);
}
}
}
...
generateId(data);
viewProfile(profileId);
You must execute them into an async scope:您必须将它们执行到异步 scope 中:
(async function(){
await generateId(data);
await viewProfile(profileId);
})()
Otherwise they aren't parsed to be awaited and viewProfile
will be executed right after generateId
.否则它们不会被解析为等待并且viewProfile
将在generateId
之后立即执行。 :) :)
As, if you are using the new ES2022 you can just
await
into the top level.因为,如果您使用的是新的 ES2022,您可以await
进入顶层。
For newer Node.js versions:对于较新的 Node.js 版本:
await generateId(data);
await viewProfile(profileId);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.