axiOS一般是作为异步请求使用的,但是某种特殊情况下需要同步请求,如何实现呢? 首先定义一个方法syncAxios let axios = require('axios'); e
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实现了延迟加载刷新页面的效果,结合控制器的交互,最终实现了同步操作的效果。
--结束END--
本文标题: Node.js中Express框架使用axios同步请求(async+await)实现方法
本文链接: https://www.lsjlt.com/news/208603.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0