【发布时间】:2018-09-30 18:46:30
【问题描述】:
我有一个带有案例的开关,在这种情况下,我想运行 axios.get() X 次,我正在尝试这样做:
case "visit":
let i;
for (i = 0; i < JSON.parse(cmd).contents.threads; i++) {
let i;
for (i = 0; i < JSON.parse(cmd).contents.visits; i++) {
console.log(i + 1 + " visits run!");
axios.get(JSON.parse(cmd).contents.target).then(res => {});
if (i === JSON.parse(cmd).contents.visits - 1) {
console.log("Visiting complete!");
}
}
}
break;
问题是它不会异步运行并在之后给我结果,输出如下所示:
1 visits run!
2 visits run!
3 visits run!
4 visits run!
5 visits run!
6 visits run!
7 visits run!
8 visits run!
9 visits run!
10 visits run!
Visiting complete!
1 visits run!
2 visits run!
3 visits run!
4 visits run!
5 visits run!
6 visits run!
7 visits run!
8 visits run!
9 visits run!
10 visits run!
Visiting complete!
一次,所以这不是异步运行,有什么建议我应该如何运行这个异步?我正在尝试以这种方式在节点中学习异步,并希望能够做到这一点。
哦,在我忘记之前,这里是 cmd 的 js 对象
{
id: "002",
app: "visit",
contents: {
target: "https://google.com/",
visits: 10,
threads: 2
}
【问题讨论】:
-
接受的答案,虽然它很好地展示了异步代码,但不使用您对线程或任何东西的定义。相反,所有 20 个请求(10 个访问 * 2 个线程)同时运行。如果您对此感到满意,那显然很好,但您知道。
标签: javascript node.js for-loop asynchronous axios