编剧抛出 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);
}