打字稿。如果有任何错误,请尝试再次调用 api

问题描述 投票:0回答:1

我有调用 API 并根据响应返回结果的函数。 但有时我可能会收到错误或其他问题。我希望我的代码再次尝试,直到收到良好的响应。

示例代码:

for(let i = 0; i < someValues.length; i++) {
    await Test(someValues[i]);
}

async function Test(someValue: string): Promise<SomeObject | null> {
    try {
        const response: any = await someapi.call(someValue); // if got some error from api (connect etc.) then try again 
        if(response) {
            return response;
        }

        return null;
    }
    catch(err) {
        console.log(err);
        setTimeout(async () => {
            await Test(someValue);
        }, 100);
    }
}

这段代码可以工作吗?如果第一次尝试会得到 api 错误,上面的循环会收到什么响应?

也在

Promise<SomeObject | null>
中遇到此错误:

Function lacks ending return statement and return type does not include 'undefined'
typescript
1个回答
0
投票

我认为你应该在 setTimeout 调用中返回

await Test(somevalue)

    catch(err) {
        console.log(err);
        setTimeout(async () => {
            return await Test(someValue);
        }, 100);

© www.soinside.com 2019 - 2024. All rights reserved.