【发布时间】:2021-09-02 12:09:21
【问题描述】:
我尝试创建一个加载测试脚本,但我遇到了奇怪的行为 我使用 https://github.com/prisma-labs/graphql-request 模块进行 graphql 请求。
但我没有看到进程运行到回调中
我看到了下一个结果。它停在前 5 个项目上。
GET: MX
GET: MX
GET: DE
GET: LT
GET: US
我想我可能无法访问回调函数中的 requestCount 变量,但我什至看不到请求已发送。
import { request, gql } from 'graphql-request'
const MAX_REQUESTS = 5;
const countries = ['GB', 'UK', 'US', 'LT', 'IT', 'DE', 'MX']
const getRandomElement = (items) => {
return items[Math.floor(Math.random()*items.length)];
}
let requestCount = 0;
while (true) {
let country = getRandomElement(countries);
let query = gql`
{
country(code: "${country}") {
name
native
capital
emoji
currency
languages {
code
name
}
}
}`
if (requestCount >= MAX_REQUESTS) {
continue;
}
console.log('GET: ', country);
request('https://countries.trevorblades.com/', query).then((data) => {
console.log('OK: ', country);
requestCount--;
}).catch((error) => {
console.log('FAILED: ', country);
requestCount--;
console.error(error)
})
requestCount++;
}
【问题讨论】:
-
你想连续向服务器发出5个请求吗?如果一个请求成功,那么它应该发出另一个请求?
-
不应该是
requestCount++;吗? -
网络标签在您的浏览器中显示什么?如果响应超时,它可以堆积请求而不会立即得到响应(然后感觉就像“跳过”了回调,但它只是在等待超时)
-
@Sagar 你说得对
标签: javascript node.js ecmascript-6 request-promise