编剧抛出 aPIRequestContext.get:请求上下文已处理
Playwright throws aPIRequestContext.get: Request context disposed
我有一段代码需要循环 json 文件。但是它抛出这个错误:
aPIRequestContext.get: Request context disposed.
我不知道为什么。
这是我的实现方式:
当我尝试将代码块放在 base.loopJsonData 之外时,它起作用了……但在里面时不起作用。我尝试打印 json 详细信息,我得到了输出,但在我使用 request.get()
时却没有
这是 loopJsonData:
public loopJsonData(json, data, callback) {
const inputData = this.loadJSONData(json, data);
inputData.forEach((val, i) => {
((item, index) => {
callback(item, index, inputData);
})(val, i);
});
}
这是 loadJSONData:
public loadJSONData(path: string, testData: string) {
let jsonPath;
this.contentPath = join(process.cwd(), path);
this.contentPath = normalizer.normalize(this.contentPath);
this.contentPath = JSON.parse(fs.readFileSync(this.contentPath, "utf8"));
jsonPath = this.contentPath;
return jsonPath[testData];
}
loopJsonData
采用异步函数但不在内部 await
(只是为每个数据项同步调用它 inputData.forEach((val, i) => {
)。使用这种方法,内部 request.get()
将在测试方法完成后 运行 并且它将与处理 request
的拆卸逻辑竞争(基本上你在 [=17= 之后调用 request.get()
] 已被调用)。
要解决此问题,您应该确保等待所有异步回调,如下所示:
async loopJsonData(json, data, callback) {
const inputData = this.loadJSONData(json, data);
const promises = [];
inputData.forEach((val, i) => {
promises.push(callback(val, i, inputData));
});
await Promise.all(promises);
}
我有一段代码需要循环 json 文件。但是它抛出这个错误:
aPIRequestContext.get: Request context disposed.
我不知道为什么。
这是我的实现方式:
当我尝试将代码块放在 base.loopJsonData 之外时,它起作用了……但在里面时不起作用。我尝试打印 json 详细信息,我得到了输出,但在我使用 request.get()
时却没有这是 loopJsonData:
public loopJsonData(json, data, callback) {
const inputData = this.loadJSONData(json, data);
inputData.forEach((val, i) => {
((item, index) => {
callback(item, index, inputData);
})(val, i);
});
}
这是 loadJSONData:
public loadJSONData(path: string, testData: string) {
let jsonPath;
this.contentPath = join(process.cwd(), path);
this.contentPath = normalizer.normalize(this.contentPath);
this.contentPath = JSON.parse(fs.readFileSync(this.contentPath, "utf8"));
jsonPath = this.contentPath;
return jsonPath[testData];
}
loopJsonData
采用异步函数但不在内部 await
(只是为每个数据项同步调用它 inputData.forEach((val, i) => {
)。使用这种方法,内部 request.get()
将在测试方法完成后 运行 并且它将与处理 request
的拆卸逻辑竞争(基本上你在 [=17= 之后调用 request.get()
] 已被调用)。
要解决此问题,您应该确保等待所有异步回调,如下所示:
async loopJsonData(json, data, callback) {
const inputData = this.loadJSONData(json, data);
const promises = [];
inputData.forEach((val, i) => {
promises.push(callback(val, i, inputData));
});
await Promise.all(promises);
}