gpt4 book ai didi

javascript - 嵌套(扩展) promise 似乎需要一个全局变量

转载 作者:行者123 更新时间:2023-12-02 23:04:07 26 4
gpt4 key购买 nike

我编写了一个库函数pRead(Path),它返回一个 JavaScript Promise,使用 Ajax 读取 Apache 服务器下本地计算机上的文件。我不会包含此代码,因为它使用任何能够对此问题给出良好答案的人都熟知的标准技术。

我想编写第二个库函数 pReadObj(Path),它将返回一个 Promise 来读取 JSON 文件并将其对象值提供给异步代码。它应该像这样工作:

pReadObj("test.json").then(then2).catch(pErr);
function then2(obj)
{
alert(JSON.stringify(obj)); // Shows the JSON obj
} // then2

这是我编写的代码:

var globalPreviousResolve;

function pReadObj(Path) // Promise to read JSON from file
{
return new Promise(function(resolve,reject)
{
globalPreviousResolve=resolve;
pRead(Path).then(pReadObj2).catch(pErr);
});
} // pReadObj

function pReadObj2(JSONStr)
{
globalPreviousResolve(JSON.parse(JSONStr));
} // pReadObj2

function pTestDB() // Called from button
{
pReadObj("test.json").then(then2).catch(pErr);
} // pTestDB

这可行,但有一个问题:使用全局变量来保存解析回调不仅丑陋,而且如果在短时间内发生两次对 pReadObj 的调用并且磁盘读取需要更长的时间,它显然会发生故障比那。

我想,解析函数需要以某种方式存储在 Promise 中。

最佳答案

no need to explicitly create a Promise ;只需返回 .then 创建的那个:

function pReadObj(Path) {
return pRead(Path).then(JSON.parse);
}

关于javascript - 嵌套(扩展) promise 似乎需要一个全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57661537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com