美文网首页
如何执行一些相对耗时的操作

如何执行一些相对耗时的操作

作者: 黑曼巴yk | 来源:发表于2019-10-25 14:05 被阅读0次

前言

假设我们有个操作相对耗时(5分钟)。假设我们等任务完成之后返回给前端。这时候肯定已经超时了。

class TradeController extends Controller {
  async buy () {
    const goods = {};
    const result = await ctx.service.trade.buy(goods);
    await ctx.service.trade.check(result);
    ctx.body = { msg: '已下单' };
  }
}

方案

如果是非常耗时的方案,最好最常用的方式是使用消息队列方式。

消息队列

消息队列是互联网解决异步的最常用的技术,但是同时要引入新的组件,增加技术复杂度

egg的处理方式ctx.runInBackground()

在处理完用户请求后,希望立即返回响应,但同时需要异步执行一些操作。可以使用这个API来操作

// app/controller/trade.js
class TradeController extends Controller {
  async buy () {
    const goods = {};
    const result = await ctx.service.trade.buy(goods);

    // 下单后需要进行一次核对,且不阻塞当前请求
    ctx.runInBackground(async () => {
      // 这里面的异常都会统统被 Backgroud 捕获掉,并打印错误日志
      await ctx.service.trade.check(result);
    });

    ctx.body = { msg: '已下单' };
  }
}

相关文章

  • 如何执行一些相对耗时的操作

    前言 假设我们有个操作相对耗时(5分钟)。假设我们等任务完成之后返回给前端。这时候肯定已经超时了。 方案 如果是非...

  • Android接口回调

    需求 用户点击按钮,触发执行耗时操作。程序开启子线程,然后在子线程中执行耗时操作。当耗时操作执行完毕后,执行回调函...

  • 无标题文章

    --如何处理android多线程安全不要堵塞UI线程,不在主线程中做耗时操作的处理,可以开启子线程去执行耗时操作 ...

  • Android异步任务实现详解

    在Android开发中,主线程(UI线程)不能执行耗时的操作,通常将一些耗时的操作使用异步任务的方式进行处理,简单...

  • 使用Fork/Join分割合并任务

    执行的结果: 如果不模拟耗时操作的情况,执行的结果如下: 可以看出,在执行耗时操作的时候,ForkJoin方式性能...

  • day18-多线程

    1. 耗时操作 耗时操作放到主线程中的问题:耗时操作放到主线程中,会阻塞线程多个耗时操作都放到一个线程中执行,最终...

  • Day17-多线程

    1、耗时操作 耗时操作放到主线程中的问题:耗时操作放到主线程中,会阻塞线程多个耗时操作都放到一个线程中执行,最终执...

  • 多线程

    耗时操作 1.耗时操作放到主线程中的问题:耗时操作放到主线程中,会阻塞线程多个耗时操作都放到一个线程中执行,最终执...

  • day18-多线程

    一、耗时操作 1.耗时操作放到主线程中的问题:耗时操作放到主线程中,会阻塞线程多个耗时操作都放到一个线程中执行,最...

  • 如何在BroadcastReceiver中执行耗时操作

    在回答这个问题之前,首先简单介绍一下 BroadcastReceiver的用法应注意的地方及其生命周期。 一、Br...

网友评论

      本文标题:如何执行一些相对耗时的操作

      本文链接:https://www.haomeiwen.com/subject/avysvctx.html