Jelajahi Sumber

chore: add timeout to prompt download request

雲霧 2 tahun lalu
induk
melakukan
818629e58b
1 mengubah file dengan 14 tambahan dan 2 penghapusan
  1. 14 2
      scripts/fetch-prompts.mjs

+ 14 - 2
scripts/fetch-prompts.mjs

@@ -10,10 +10,20 @@ const RAW_EN_URL = "f/awesome-chatgpt-prompts/main/prompts.csv";
 const EN_URL = MIRRORF_FILE_URL + RAW_EN_URL;
 const EN_URL = MIRRORF_FILE_URL + RAW_EN_URL;
 const FILE = "./public/prompts.json";
 const FILE = "./public/prompts.json";
 
 
+const timeoutPromise = (timeout) => {
+  return new Promise((resolve, reject) => {
+    setTimeout(() => {
+      reject(new Error('Request timeout'));
+    }, timeout);
+  });
+};
+
 async function fetchCN() {
 async function fetchCN() {
   console.log("[Fetch] fetching cn prompts...");
   console.log("[Fetch] fetching cn prompts...");
   try {
   try {
-    const raw = await (await fetch(CN_URL)).json();
+    // const raw = await (await fetch(CN_URL)).json();
+    const response = await Promise.race([fetch(CN_URL), timeoutPromise(5000)]);
+    const raw = await response.json();
     return raw.map((v) => [v.act, v.prompt]);
     return raw.map((v) => [v.act, v.prompt]);
   } catch (error) {
   } catch (error) {
     console.error("[Fetch] failed to fetch cn prompts", error);
     console.error("[Fetch] failed to fetch cn prompts", error);
@@ -24,7 +34,9 @@ async function fetchCN() {
 async function fetchEN() {
 async function fetchEN() {
   console.log("[Fetch] fetching en prompts...");
   console.log("[Fetch] fetching en prompts...");
   try {
   try {
-    const raw = await (await fetch(EN_URL)).text();
+    // const raw = await (await fetch(EN_URL)).text();
+    const response = await Promise.race([fetch(EN_URL), timeoutPromise(5000)]);
+    const raw = response.text();
     return raw
     return raw
       .split("\n")
       .split("\n")
       .slice(1)
       .slice(1)