You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现向file.php发送GET请求定时重发,按yes/no响应执行对应函数

需求实现方案

以下提供两种主流场景的可运行实现:

1. 浏览器端原生JavaScript实现

核心逻辑用fetch发请求,结合递归+定时器实现重试机制:

// 定义对应处理函数
function handleYes() {
  // 收到yes后的逻辑写在这里
  console.log('执行yes对应逻辑');
}

function handleNo() {
  // 收到no后的逻辑写在这里
  console.log('执行no对应逻辑');
}

// 核心请求重试函数
function sendRequest() {
  // 拼接GET请求参数
  const params = new URLSearchParams({
    username: 'alison',
    date: '2021'
  });
  // 发送GET请求
  fetch(`file.php?${params}`)
    .then(res => res.text()) // 读取响应文本内容
    .then(resText => {
      // 去前后空格避免响应带换行/空白符导致判断失败
      const trimRes = resText.trim();
      // 判断是否为合法响应
      if (trimRes === 'yes') {
        handleYes();
      } else if (trimRes === 'no') {
        handleNo();
      } else {
        // 非法响应,200ms后重试
        setTimeout(sendRequest, 200);
      }
    })
    .catch(err => {
      // 请求出错(网络错误/接口报错等),200ms后重试
      setTimeout(sendRequest, 200);
    })
}

// 首次调用启动请求
sendRequest();
  • 可选优化:可新增全局变量统计重试次数,超过阈值后终止重试避免资源浪费。

2. Node.js 环境实现(基于axios库)

如果是服务端Node.js场景,实现逻辑如下:

const axios = require('axios');

// 定义处理函数
function handleYes() {
  console.log('执行yes对应逻辑');
}

function handleNo() {
  console.log('执行no对应逻辑');
}

async function sendRequest() {
  try {
    const res = await axios.get('file.php', {
      params: {
        username: 'alison',
        date: '2021'
      },
      responseType: 'text'
    });
    const trimRes = res.data.trim();
    if (trimRes === 'yes') {
      handleYes();
    } else if (trimRes === 'no') {
      handleNo();
    } else {
      setTimeout(sendRequest, 200);
    }
  } catch (err) {
    // 请求异常时重试
    setTimeout(sendRequest, 200);
  }
}

// 启动请求
sendRequest();

内容的提问来源于stack exchange,提问作者AlisonVV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:09:02