美文网首页
promise 练习题(一)基础题型

promise 练习题(一)基础题型

作者: 老衲不生气 | 来源:发表于2020-06-06 17:35 被阅读0次
//1、
const promise1 = new Promise((resolve, reject) => {
  console.log('promise1')
})
console.log('1', promise1);
分析过程
  • 从上至下,先遇到new Promise,执行该构造函数中的代码promise1
  • 然后执行同步代码1,此时promise1没有被resolve或者reject,因此状态还是pending
执行结果

'promise1'
'1' Promise{<pending>}

————————————————————————————————————————

//2、
const promise = new Promise((resolve, reject) => {
  console.log(1);
  resolve('success')
  console.log(2);
});
promise.then(() => {
  console.log(3);
});
console.log(4);
分析过程
  • 从上至下,先遇到new Promise,执行其中的同步代码1
  • 再遇到resolve('success'), 将promise的状态改为了resolved并且将值保存下来
  • 继续执行同步代码2
  • 跳出promise,往下执行,碰到promise.then这个微任务,将其加入微任务队列
  • 执行同步代码4
  • 本轮宏任务全部执行完毕,检查微任务队列,发现promise.then这个微任务且状态为resolved,执行它。
执行结果

1 2 4 3

————————————————————————————————————————

//3、
const promise = new Promise((resolve, reject) => {
  console.log(1);
  console.log(2);
});
promise.then(() => {
  console.log(3);
});
console.log(4);
分析过程
  • 和题目二相似,只不过在promise中并没有resolve或者reject
  • 因此promise.then并不会执行,它只有在被改变了状态之后才会执行。
执行结果

1 2 4

————————————————————————————————————————

//4、
const promise1 = new Promise((resolve, reject) => {
  console.log('promise1')
  resolve('resolve1')
})
const promise2 = promise1.then(res => {
  console.log(res)
})
console.log('1', promise1);
console.log('2', promise2);
分析过程
  • 从上至下,先遇到new Promise,执行该构造函数中的代码promise1
  • 碰到resolve函数, 将promise1的状态改变为resolved, 并将结果保存下来
  • 碰到promise1.then这个微任务,将它放入微任务队列
  • promise2是一个新的状态为pending的Promise
  • 执行同步代码1, 同时打印出promise1的状态是resolved
  • 执行同步代码2,同时打印出promise2的状态是pending
  • 宏任务执行完毕,查找微任务队列,发现promise1.then这个微任务且状态为resolved,执行它。
执行结果

'promise1'
'1' Promise{<resolved>: 'resolve1'}
'2' Promise{<pending>}
'resolve1'

————————————————————————————————————————

//5、
const fn = () => (new Promise((resolve, reject) => {
  console.log(1);
  resolve('success')
}))
fn().then(res => {
  console.log(res)
})
console.log('start')
分析过程
  • fn函数它是直接返回了一个new Promise
执行结果

'start'
'success'

————————————————————————————————————————

//6、基于第五题做的变形
const fn = () =>
  new Promise((resolve, reject) => {
    console.log(1);
    resolve("success");
  });
console.log("start");
fn().then(res => {
  console.log(res);
});
分析过程
执行结果

"start"
1
"success"

相关文章

  • promise 练习题(一)基础题型

    分析过程 从上至下,先遇到new Promise,执行该构造函数中的代码promise1 然后执行同步代码1,此时...

  • Promise

    promise基础

  • 2018-08-01 雅思强化听力

    HOMEWORK!!! 强化阶段讲义上面的练习题 选择题 一.单选 1.题型认知 没有字数限制, ...

  • 练习教辅产品新革命

    学生数学练习APP产品有许多种,大都是在练习题型上面做创新,各种各种题型不同,加上实时反馈,学生反馈不错。 但是这...

  • Promise

    基础用法 Promise.all() Promise.all方法用于将多个 Promise 实例,包装成一个新的 ...

  • 第八周第二天笔记

    ES6之Promise类 1 Promise类基础知识解读 promise类的静态属性方法分类:resolve()...

  • promise 练习题(二)

    promise 结合 setTimeout 需要理解的知识点:event loop执行顺序: 一开始整个脚本作为一...

  • promise 练习题(三)

    Promise中的then、catch、finally 需要理解的知识点: 1 .then和.catch都会返回一...

  • promise新手常见问题

    导读 上周讲了promise用法,这周我们讲一下promise实战中可能出现得一些易错点,如果对promise基础...

  • js-Promise基础

    js-Promise基础(第三周) Promise含义 promise意思为允诺、许诺、承诺在js中为了解决编写代...

网友评论

      本文标题:promise 练习题(一)基础题型

      本文链接:https://www.haomeiwen.com/subject/wafftktx.html