如何在实际项目中使用Promise(入门级)
你们有没有遇到过这样的情况,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
}
}
})
这样就可以分别在不同的地方处理一个异步请求的返回值了。
如何在实际项目中使用Promise(入门级)的更多相关文章
- 深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
第一部分,Promise 加入 ES6 标准 原文地址 http://www.cnblogs.com/wangfupeng1988/p/6515855.html 未经作者允许不得转载! 从 jquer ...
- 如何在NodeJS项目中优雅的使用ES6
如何在NodeJS项目中优雅的使用ES6 NodeJs最近的版本都开始支持ES6(ES2015)的新特性了,设置已经支持了async/await这样的更高级的特性.只是在使用的时候需要在node后面加 ...
- 浅谈redux-form在项目中的运用
准则 先说一下redux的使用场景,因为如果没有redux,那更不会有redux-form. redux基于Flux架构思想,是一个状态管理框架,其目标是解决单页面应用中复杂的状态管理问题. 日常前端 ...
- 在微信小程序的JS脚本中使用Promise来优化函数处理
在我们传统的Javascript开发函数编写中,我们习惯了回调函数的处理,不过随着回调函数的增多,以及异步处理的复杂性等原因,代码越来越难读,因此诞生了使用Promise来优化JS函数处理的需求,引入 ...
- vue项目中关于axios的简单使用
axios介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 官方仓库:https://github.com/axios/axios 中文文档:htt ...
- vuex在项目中使用的一点总结
以下为vue后台管理项目中使用vuex的一点总结,截取了其中部分代码,如有什么错误,还望指出. 1. token 存储 登陆成功之后,需要把获取到的 token 存储到 vuex 中,配合 axios ...
- 浅谈 Axios 在 Vue 项目中的使用
介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 特性 它主要有如下特性: 浏览器端发起XMLHttpRequests请求 Node端发起http ...
- 分享我在 vue 项目中关于 api 请求的一些实现及项目框架
本文主要简单分享以下四点 如何使用 axios 如何隔离配置 如何模拟数据 分享自己的项目框架 本文主要目的为以下三点 希望能够帮到一些人 希望能够得到一些建议 奉上一个使用Vue的模板框架 我只是把 ...
- Captcha服务(后续2)— 改造Captcha服务之Asp.Net Core项目中如何集成TypeScript
环境准备 .Net Core 版本:下载安装.Net Core SDK,安装完成之后查看sdk版本 ,查看命令dotnet --version,我的版本是2.2.101 IDE: Visual Stu ...
随机推荐
- android 选取部分 log 的两种方法
Grep多个条件: android logcat -v time | grep -e A -e B 选取多个android log tag: android logcat -v time -s TAG ...
- Struts2 全局结果集
1.index,jsp <body> Result类型 <ol> <li><a href="user/user?type=1">返回 ...
- 13.ng-value
转自:https://www.cnblogs.com/best/tag/Angular/ 绑定给定的表达式到input[select]或 input[radio]的值上 <input type= ...
- spring xml配置文件根元素(文件头文件)说明
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- HTML中常用的部分标签(一)
[常见的块级标签] 标题标签<h1></h1>...<h6></h6> 水平线<hr/> 段落<p></p> 换行& ...
- 【Linux端口大全】
2端口:管理实用程序 3端口:压缩进程 5端口:远程作业登录 7端口:回显 9端口:丢弃 11端口:在线用户 13端口:时间 17端口:每日引用 18端口:消息发送协议 19端口:字符发生器 20端口 ...
- Windows 一键关闭UAC、防火墙、IE配置脚本
有时候,在环境需求下,需要关闭windows防火墙,UAC,以及IE选项配置. 对不懂电脑来说是比较麻烦的,老是得教他们,关键还记不住…… so,以下脚本就可以解决这个问题 注:脚本 需要右键 以管理 ...
- this对象的理解
(回答一:) (1).js的this指向是不确定的,也就是说是可以动态改变的.call/apply 就是用于改变this指向的函数,这样设计可以让代码更加灵活,复用性更高 (2).this 一般情况下 ...
- python + eclipse + django + postgresql 开发网站(二)
引用与参考 http://www.cnblogs.com/lanxuezaipiao/p/3283932.html python2.7 django1.6 1.新建Django项目
- js---16原型链
var p = {name:"sss"}; var c2 = Object.create(p,{age:32,salar:"eee"});//c2就继承了p的属 ...