我有以下代码
import fetch, { Response } from "node-fetch"
import { joinCookieNameAndValue } from "../string-manipulation"
import item from "../../types/data-types/item"
const scan = (name: string, page: number): Promise<item | void> => new Promise(async (resolve, reject) => {
const itemsRes: Response = await fetch(`url`, {
method: "GET",
headers: {
Cookie: joinCookieNameAndValue("cookie-name", <string> process.env.COOKIE_VALUE)
}
})
if (!itemsRes.ok) {
return reject(new Error(`Could not fetch items: request failed with status code ${itemsRes.status}`));
}
const items: Array<item> = await itemsRes.json();
const item_: item | undefined = items.find(i => i.name == name);
if (items.length == 0) {
return resolve();
}
if (!item_) {
return scan(name, ++page);
}
resolve(item);
})
export default async (name: string) => scan(name, 1);
上面的promise 在另一个脚本中等待,但它之后的代码将永远不会运行,因为即使items.length == 0
if语句中的代码运行,promise 也永远不会得到解析.