你们有没有遇到过这样的情况,ES6看过了,Promise的文字概念都懂,但是我要怎么在项目中去写一个Promise呢?

那天我就是带着这样的疑问去网上搜了下。最后成功地在项目中应用了Promise,只有实际成功使用一次,才能明白它的前因后果,明白它的用途。

1.这是一个vue的电商项目-商品详情页

我写了个方法调库存接口。

通常情况,异步请求完毕,直接处理结果。但现在我需要在不同的地方调用,对结果进行不同的处理。所以我在getStock方法里返回一个promise,也就是把getStock方法里axios.get异步请求的结果直接返回。

getStock(region_id, product_id) {
return new Promise((resolve, reject) => {
axios.get('/index.php/storage-stock.html', {
params: {
area_id: region_id,
product_id: [product_id]
}
}).then(function (res) {
resolve(res)
}).catch(function (error) {
reject(error)
})
})
}

这里请注意关键点,.then() 里面的 resolve(res)

2.以下是一个调用的地方:

this.getStock(REGION_ID, this.product_id).then((res) => {
if (res.data.data) {
const data = res.data.data
if (data.length > 0) {
this.goodsInfo = data[0]
this.stock = data[0].stock
this.stock_total = data[0].stock_total
this.is_danger = data[0].is_danger
this.marketable = data[0].marketable
} else {
this.stock = 0
}
}
})

这里.then() 里面的res 就是getStock方法的返回值。

3.另一个调用的地方:

this.getStock(region_id, product_id).then((res) => {
if (res.data.data) {
const data = res.data.data
if (data.length > 0) {
that.stock = data[0].stock
that.stock_total = data[0].stock_total
} else {
that.stock = 0
}
}
})

这样就可以分别在不同的地方处理一个异步请求的返回值了。

最新文章

  1. [C#常用代码]类库中读取解决方案web.Config字符串
  2. JVM内存监控工具 JavaMelody
  3. 【Bochs 官方手册翻译】 第一章 Bochs介绍
  4. 给JavaScript初学者的24条最佳实践(share)
  5. [py]导入模块3种方法
  6. java笔记--查看和修改线程名称
  7. javascript事件学习笔记
  8. Delphi版的完成端口控件
  9. spring mvc model.addAttribute页面c:forEach取不到
  10. web.xml 中<taglib>报错(转载)
  11. 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)
  12. RGB和HSV颜色空间
  13. 自定义的jdbc连接工具类JDBCUtils【java 工具类】
  14. Dynamics 365中的常用Associate和Disassociate消息汇总
  15. python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例
  16. Docker备忘录
  17. 声笔飞码GB2312单字效率分析
  18. 战斗bug技巧全攻略
  19. Java compiler level does not match the version of the installed Java project facet.解决方法
  20. 第十课 C++异常简介

热门文章

  1. ztree中依据后台中传过来的node的id,将这个node的复选框置为不可用
  2. poj 2240 Bellman-Flod 求环
  3. 无法往SQL Server Management Studio拖脚本
  4. 解决Android Studio 2.2.3中添加.cpp .h文件在Project->Android无法显示,无法正常编译问题。
  5. 分贝(dB)的理解
  6. 安装vnc出现的问题
  7. Cisco交换机解决网络蠕虫病毒入侵问题
  8. hight charts
  9. OPENCV(2) —— Basic Structures(一)
  10. noip 2018 day1 T2 货币系统 完全背包