promise

// 先构造一个 promise 函数
// resolve 和 reject 都是一个函数
// resolve 在成功时调用
// reject 在失败时调用
function promise() {
return new Promise((resolve, reject) => {
let tar = Math.random(0, 1)
if (tar > 0.5) {
console.log('suceess')
setTimeout(function() {
resolve('resolve')
}, 1000)
} else {
console.log('fail')
setTimeout(function() {
reject('reject')
}, 1000)
}
})
} // then 和 catch 第一个参数为resolve状态时的回调,第二个参数为reject状态时的回调
// catch 相当于 then(null, reject)
promise().then(
(resolve) => console.log('then', resolve)
).catch(
(reject) => console.log('catch', reject)
) // then 后面还可以接 then 一直链式调用
// 第一个 then 接受的参数是 resolve 函数传过来的参数
// 第二个 then 接受一个参数是第一个 then 返回的值
promise().then(
(resolve) => (resolve + 1) // 接受 resolve 返回 resolve + 1
).then(
(plusOne) => console.log(plusOne) // 接受 resolve +1 并打印
).catch(
(reject) => console.log('catch', reject)
)

async

// 同样需要一个 promise 对象
function promise() {
return new Promise((resolve, reject) => {
let tar = Math.random(0, 1)
if (tar > 0.5) {
console.log('success')
setTimeout(function() {
resolve('resolve')
}, 1000)
} else {
console.log('fail')
setTimeout(function() {
reject('reject')
}, 1000)
}
})
} // 只是调用的方法跟 then/catch 不一样
// async 函数执行时,一旦遇到 await 就会先返回,等异步操作完成,再接着执行后面的操作
async function async() {
const res = await promise()
console.log(res)
console.log('wait')
return res
} // async 函数返回 promise 对象
// 只有函数内的 await 语句全部执行完,或者遇到 return 或 抛出错误,才会发生状态改变
// 如果发生错误或状态为 reject 则执行 catch
async().then(
(res) => console.log(res)
).catch(
(e) => console.log(e)
)

promise 和 async 的用法的更多相关文章

  1. 异步操作之 Promise 和 Async await 用法进阶

    ES6 提供的 Promise 方法和 ES7 提供的 Async/Await 语法糖都可以更好解决多层回调问题, 详细用法可参考:https://www.cnblogs.com/cckui/p/99 ...

  2. 前端异步编程之Promise和async的用法

    传统的异步解决方案采用回调函数和事件监听的方式,而这里主要记录两种异步编程的新方案: ES6的新语法Promise ES2017引入的async函数 Generator函数(略) Promise的含义 ...

  3. promise和async/await的用法

    promise和async都是做异步处理的, 使异步转为同步 1.promise 它和Promise诞生的目的都是为了解决“回调地狱”, promise使用方法: <button @click= ...

  4. Promise、async、await在Egret的简单应用

    Egret Engnie 5.1.10 Egret Wing 4.1.5 一.Promise.async.await相关知识 Promise介绍 阮一峰 async函数 阮一峰 具体和详细的说明用法可 ...

  5. promise 进阶 —— async / await 结合 bluebird

    一.背景 1.Node.js 异步控制 在之前写的 callback vs async.js vs promise vs async / await 里,我介绍了 ES6 的 promise 和 ES ...

  6. promise、async和await

    async:async function 声明将定义一个返回 AsyncFunction 对象的异步函数.当调用一个 async 函数时,会返回一个 Promise 对象.当这个 async 函数返回 ...

  7. Promise和async/await

    1.promise对象 promise 对象有三种状态:pending(进行中).fulfilled(已成功)和 rejected(已失败).promise 对象的状态改变,只有两种可能:从 pend ...

  8. Promise 和async/await 的使用理解

    Promise 和async/await 的使用理解 1. new Promise时就会开始执行语句. new Promise(resolve => resolove('成功信息') )     ...

  9. 20分钟带你掌握JavaScript Promise和 Async/Await

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.freecodecamp.org/news/learn-promise-a ...

随机推荐

  1. 酷狗歌曲缓存kgtemp转mp3工具

    一直用网易音乐听歌,不过网易的歌曲版权确实是少了一些,在酷狗上可以找到,但收费歌曲只能试听不能下载. 寻找方案 从设置里可以看出,酷狗会设置缓存目录,试听的歌曲存放到这个缓存里. 打开缓存目录: 可以 ...

  2. JAVA通过Gearman实现MySQL到Redis的数据同步(异步复制)

    MySQL到Redis数据复制方案 无论MySQL还是Redis,自身都带有数据同步的机制,像比较常用的 MySQL的Master/Slave模式 ,就是由Slave端分析Master的binlog来 ...

  3. 八皇后問題 (C語言递归實現 回溯法)

    八皇后问题是一个以国际象棋为背景的问题:怎样可以在 8×8 的国际象棋棋盘上放置八个皇后,使得不论什么一个皇后都无法直接吃掉其它的皇后?为了达到此目的.任两个皇后都不能处于同一条横行.纵行或斜线上.現 ...

  4. hdu 4883 区间选点

    昨天比赛的时候没有做出来,本来是想用贪心的,可是贪了好久都没有招, 今天在网上搜了解题报告~好像说这是一类区间选点问题: 有一个好的做法: (1)首先把题目中的时间全转化为分钟,那么区间就在0-144 ...

  5. swift手记-4

    // // ViewController.swift // learn4 // // Created by myhaspl on 16/1/23. // Copyright (c) 2016年 myh ...

  6. Clang-Format: Visual Studio Style

    PointerAlignment: Left UseTab: Never IndentWidth: 4 BreakBeforeBraces: Allman AllowShortIfStatements ...

  7. Sql去重

    distinct:用于返回唯一不同的值. 注意:1.语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的. 2.distinct必须放在开头 如select disti ...

  8. Spark配置参数优先级

    1.Properties set directly on the SparkConf take highest precedence, 2.then flags passed to spark-sub ...

  9. C#Linq技术中SelectMany(...)函数的内部实现的伪代码

    我们先来假设这种场景: 一个学校中有多个年级,一个年级有多个班级,一个班级里有多个学生.这里我们只需要班级.年级.和学生这三个概念: 让我们先来定义Class类和Student类: // 注意,Cla ...

  10. [array] leetcode - 41. First Missing Positive - Hard

    leetcode - 41. First Missing Positive - Hard descrition Given an unsorted integer array, find the fi ...