我们常用的需要轮询接口 的有 调用三方支付的时候 后端的接口 是异步 的 可能一时半会给不了我们最后的结果 所以我们 需要轮训后端的接口 等到获得接口 再执行 相关的前端逻辑

调用前端支付收银台 进行支付

这个过程我们需要进行 计算 通过递归 函数的方法 进行实现

<template>
  <div @click="queryResult(1234567890)">测试相关的轮训调用接口的方法</div>
</template>
<script setup>
import { ref, onMounted } from "vue";
const queryLoading = ref(false);
const queryNumber = ref(0);

const queryDone = () => {
  queryLoading.value = false;
  queryNumber.value = 0;
};
const queryResult = async (batchNo) => {
  queryNumber.value++;
  if (queryNumber.value > 30) {
    message.error("下单失败");
    queryDone();
    return;
  }
  queryLoading.value = true;

  try {
    //调用轮训接口 进行相关的操作
    const queryRes = await queryChannelApplyCreateOrderResult({
      batchNo,
      bizType: 1,
    });
    if (queryRes.data.handleResult == 2) {
      queryDone();
      //调用成功的操作
    } else if (queryRes.data.handleResult == 1) {
    } else {
      setTimeout(() => {
        queryResult(batchNo);
      }, 1000);
    }
  } catch (error) {
    queryDone();
  }
};
</script>

以上就是我所描述的接口 

实现 大家可以在实践中使用这个进行测试 实现当前的支付轮训逻辑

轮询和递归有什么不同?


轮询(Polling)和递归(Recursion)是两种不同的编程概念,它们用于解决不同类型的问题,并且它们的工作方式也不同。

“轮询”是一种编程技术,用于定期检查某个条件是否满足。在轮询中,程序会定期执行一个函数或方法,以检查某个条件是否满足,例如检查某个文件是否已经准备好,或者检查某个网络请求是否已经完成。轮询通常用于等待某个条件变为真,但它可能会导致性能问题,因为它会不断地执行函数,即使条件已经满足。

“递归”是一种编程技巧,它允许一个函数在其内部调用自身。递归函数通常用于解决可以分解为相似子问题的问题,例如计算阶乘、遍历树或图等。递归函数需要一个基准情况,以防止无限递归。递归是一种强大的工具,但它也可能会导致性能问题,特别是当问题规模较大时。

总的来说,轮询和递归都是解决特定问题的工具,但它们的工作方式和适用场景是不同的。你应该根据你的具体需求选择最合适的工具。

拓展:

程序轮询是什么?

程序轮询(Polling)是一种常见的编程技术,用于定期检查某个条件是否满足。在轮询中,程序会定期执行一个函数或方法,以检查某个条件是否满足,例如检查某个文件是否已经准备好,或者检查某个网络请求是否已经完成。

以下是一个简单的轮询的例子,它每秒检查一次一个变量是否已经达到某个值:


let count = 0;
 
function checkCount() {
  if (count >= 10) {
    console.log('Count has reached 10');
    clearInterval(intervalId); // 停止轮询
  } else {
    console.log('Count is still less than 10');
  }
}
 
let intervalId = setInterval(checkCount, 1000); // 每秒执行一次 checkCount 函数
 
// 模拟 count 的增加
setInterval(() => {
  count++;
}, 500);

递归

递归是一种常见的编程技巧,它允许一个函数在其内部调用自身。递归函数通常用于解决可以分解为相似子问题的问题,例如计算阶乘、遍历树或图等。

以下是一个计算阶乘的递归函数的例子:


function factorial(n) {
  if (n === 0) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}
 
console.log(factorial(5)); // 输出 120

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐