Node.js中Express框架使用axios同步请求(async+await)实现方法

axios一般是作为异步请求使用的,但是某种特殊情况下需要同步请求,如何实现呢?

首先定义一个方法syncAxios

let axios = require('axios');

exports.syncAxios = function (obj = {}) {
  let url =  "http://www.rrbay.com/api/";

  return new Promise((resolve, reject) => {
    axios(url, {
      method: 'POST',
      timeout: 5000,
      params: {
        sProcName: obj.sProcName,
        idNo: obj.id,
        userName: obj.qq,
        overTime: obj.endTime
      }
    }).then((res) => {
      resolve(res.data);
    }).catch((error) => {
      reject(error)
    })
  })
};

然后在controllers 调用

exports.check = function (req, res) {
  //定义async方法体
  XXXMode.findById(id).populate('author').exec(async function (err, result) {
    let dataCode = false;
    if(result.status ==0){
        //同步调用
      await baseapi.syncAxios({
          sProcName: 'Update',
          id: '000000-1111-2222-3333-9999999',
          qq: '391502069',//result.author.name,
          endTime:  '2022/12/31 11:39:05'//result.EndTime
        }).then((data) => {
          console.log(data, 'res');
        }).catch((err) => {
          console.log(err && err.stack);
        });

    }
    result.save(function (err, onewxtob) {
      if (req.xhr) {
        return res.json({
          status: !err
        })
      }
    });
  });
};

view中使用模板引擎jade,需要在请求check后,延迟刷新页面显示请求结果

setTimeout(function () {
   $(location).attr('href',window.location.href)
}, 1000)

这里的setTimeout实现了延迟加载刷新页面的效果,结合控制器的交互,最终实现了同步操作的效果。

(0)

相关推荐

  • node.js express和koa中间件机制和错误处理机制

    目录 一.前言 二.中间件问题解析 三.错误逻辑捕获 3.1 express的错误捕获逻辑 3.2 同步逻辑错误获取的底层逻辑 3.3 异步逻辑错误获取的底层逻辑 3.4 koa的错误获取逻辑 一.前言 大家可能都知道koa是express核心原班人马写的,那么他们为什么要在express后再造一个koa的轮子呢? 今天就给大家带来一些分析.希望能够起到一个抛砖引玉的作用. 其实,这个题目也可以这么问, express有什么缺点? koa解决了一些express的什么问题? 这也在一些面试题中会

  • node.js利用express自动搭建项目的全过程

    一.安装express库和生成器 打开cmd输入命令:  yarn global add express express-generator 解释: 上面里两个模块分别表示库和生成器,在express3时,安装express会自动的给你安装生成器express-generator ,但是在express4时,他们就被分开了,所以需要分别安装. 安装好后可以通过命令:express --version 检查是否安装成功. 出现版本号即为安装成功(如下图所示). 二.express生成器自动创建ex

  • node.js使用express-jwt报错:expressJWT is not a function解决

    目录 问题描述 控制台报错 问题原因 解决办法一 解决办法二 问题解决 总结 问题描述 node.js 使用 express-jwt 生成token报错 控制台报错 问题原因 由于express-jwt 版本的更新,之前的语法不适用于现在的 新版本 ,可以看到现在 是 7 开头的版本 解决办法一 简单粗暴,换更早版本的  express-jwt 卸载  npm uninstall express-jwt 安装先前版本 npm i express-jwt@5.3.3 解决办法二 因为版本问题,最新

  • Ajax 的初步实现(使用vscode+node.js+express框架)

    需求: 点击按钮 向服务端发送一个请求 然后将服务端返回的响应体结果在一个div中呈现出来 同时页面不刷新 一. 服务端的前期准备 安装node.js https://nodejs.org/en/download/ 检验是否安装成功 : 在命令行输入 node -v 按下enter 键之后出现 版本号就表明安装成功 (图如下) 使用 vscode安装express (前提是你已经成功安装了node.js) 在 vscode 里面新建一个文件夹 文件下面包含俩个文件 一个是你的前端页面代码:.ht

  • Node.js中Express框架的使用教程详解

    目录 Express简介 Express生成器 1. 什么是Express生成器 2. 安装Express生成器 创建Express项目 安装项目依赖 运行Express项目 Express目录结构说明 创建一个新路由模块 1. 创建ejs模块文件 2. 创建路由文件 3. 在app.js中引入路由 4. 运行项目 经过前面几天对Node.js的学习,基本的开发知识已经逐渐掌握,所谓工欲善其事必先利其器,今天进一步学习Node.js的开发框架Express.利用Express框架可以快速的进行W

  • node.js使用express框架进行文件上传详解

    关于node.js使用express框架进行文件上传,主要来自于最近对Settings-Sync插件做的研究. 目前的研究算是取得的比较好的进展. Settings-Sync中通过快捷键上传文件,其实主要还是请求后端接口. 于是我便使用node.js模拟一个服务,这个服务其实就相当于github api(Settings-Sync实际请求的接口,比如token验证,gist存储创建等都是来自github 对应的api). 话不多说,直接代码贴起讲解: 1.创建一个node.js项目(这里我以ex

  • node.js中express模块创建服务器和http模块客户端发请求

    首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文件等,就可以在浏览器中访问了 var express = require("express"); var path = require("path"); var app = express(); //目录 (当前目录下的www_root目录) app.use(expre

  • node.js中 mysql 增删改查操作及async,await处理实例分析

    本文实例讲述了node.js中 mysql 增删改查操作及async,await处理.分享给大家供大家参考,具体如下: 要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = require('mysql'); //创建数据库连接 let conn = mysql.createConnection({ //主机地址 host: '127.0.0.1', //用户

  • axios中如何进行同步请求(async+await)

    目录 axios进行同步请求(async+await) 介绍 代码示例 axios使用async/await对promise进行优化 解释 axios进行同步请求(async+await) 介绍 Axios 是一个基于 promise 的 HTTP 库,它支持 PromiseAPI. 像这样: axios.post('getsomething').then(     res => {         // 进行一些操作     } ) 而 async/await 是一种建立在Promise之上的

  • Node.js的Express框架使用上手指南

    Express介绍 npm提供了大量的第三方模块,其中不乏许多Web框架,比如我们本章节要讲述的一个轻量级的Web框架 --- Express. Express是一个简洁.灵活的node.js Web应用开发框架, 它提供一系列强大的功能,比如:模板解析.静态文件服务.中间件.路由控制等等,并且还可以使用插件或整合其他模块来帮助你创建各种 Web和移动设备应用,是目前最流行的基于Node.js的Web开发框架,并且支持Ejs.jade等多种模板,可以快速地搭建一个具有完整功能的网站. 好,下面我

  • Node.js中Request模块处理HTTP协议请求的基本使用教程

    这里来介绍一个Node.js的模块--request.有了这个模块,http请求变的超简单. Request使用超简单,同时支持https和重定向. var request = require('request'); request('http://www.google.com', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // 打印goo

  • 提升node.js中使用redis的性能遇到的问题及解决方法

    问题初现 某基于node.js开发的业务系统向外提供了一个dubbo服务,提供向第三方缓存查询.设置多项业务数据并聚合操作结果.在QPS达到800时(两台虚拟机,每台机器4Core8G4node进程),在监控平台上出现了非常多的slow rt警告,平均接口响应达到60+ms,请求报警率达到80%+. 为找到造成该服务吞吐量过低的罪魁祸首,业务人员在请求日志中打点了所有查询缓存的操作,结果显示每个请求查询缓存耗时在50-100ms之间跳动.查询了redis-server的监控数据发现,不存在ser

  • node.js中express中间件body-parser的介绍与用法详解

    前言 Node中的核心模块分两类:一类是自带的核心模块,如http.tcp等,第二类是第三方核心模块,express就是与http对应的第三方核心模块,用于处理http请求.express在3.0版本中自带有很多中间件,但是在express 4.0以后,就将除static(静态文件处理)以外的其他中间件分离出来了:在4.0以后需要使用中间件时,就需要单独安装好相应的中间件以后调用,以下3.0与4.0中间件的中间件区别(3.0是内置中间件属性名,4.0是需要安装的中间件名称): Express 3

  • node.js中格式化数字增加千位符的几种方法

    每三位以逗号分隔的处理方式 正则方式: 复制代码 代码如下: "15000000".split("").reverse().join("").replace(/(\d{3})/g, "$1,").split("").reverse().join(""); "115000000".split("").reverse().join("&quo

随机推荐