let
b
=
this
.
a
(
)
console
.
log
(
b
)
第一种方式
then
接收
let
b
=
this
.
a
(
)
.
then
(
res
=>
{
console
.
log
(
res
)
.
catch
(
err
=>
{
console
.
log
(
err
)
第二种方式
async await
接收:
async
c
(
)
{
let
b
=
await
this
.
a
(
)
console
.
log
(
b
)
这里要注意的是 async 和 await 必须是一起的
—————————————————————
小白上路,请多指教!!
Promise {<pending}Promise {<pending>}首先你需要知道 promise 要用then接收或者async await例如:a() 是一个Promise封装的方法// 定义一个变量直接a() 赋值给 blet b = this.a()console.log(b) //这里就会返回 Promise {<pending>}第...
一、什么是
Promise
Promise
是对象,代表了一个函数最终可能的返回值或抛出的异常,就是用来异步处理值的。
Promise
是一个构造函数,自己身上有all、reject、resolve这几个异步方式处理值的方法,原型上有then、catch等同样很眼熟的方法。
二、为什么使用
Promise
有了
Promise
对象,就可以把异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,
Promise
对象提供了统一的接口,使得控制异步操作更加容易。
Promise
对象有以下2个特点:
1.对象的状态不受外界影响。
Promise
对象代表一个异步操作,有三种状态:Pending(进行中
之前貌似很少写过
promise
, async, await相关的内容。我大概知道await使用的时候,函数必须外边有async. 我今天写函数的时候,写了一个函数,然后调用的时候,发现返回的是
promise
<pending>的状态。但是我在调用的函数里面打log, 是能打出来结果的,搜了很长时间才找到答案。最后也解决了。这里记录一下:
var rs={score:0};
var g...
我们在使用函数的时候经常需要在函数的参数传入另外一个函数,一层一层传递,很容易造成回调地狱,这样的代码不利于维护;
promise
是个构造函数对象,解决了回调问题,它有三种状态,pending(等待态),fulfiled(成功态),rejected(失败态),常用到的方法则有 then,catch,all,race
promise
是用来解决两个问题的:
回调地狱,代码难以维护, 常常第一个的函数的输出是第二个函数的输入这种现象
promise
可以支持多个并发的请求,获取并发请求中的数据
这个
promise
可以解决异步的问题,本身不能说
promise
是异步的
Promise
的构造函数接收一个参数
JavaScript是一门典型的异步编程脚本语言,在编程过程中会大量的出现异步代码的编写,在JS的整个发展历程中对异步编程的处理方式经历了很多个时代,最典型也是现今使用最广泛的时代就是
Promise
对象处理异步编程。那么什么是
Promise
对象呢?
Promise
是ES6版本提案中实现的异步处理方式,对象代表了未来将要发生的事件,用来传递异步操作的消息。
为什么使用
Promise
对象
举个栗子:
在过去的编程中JavaScript的主要异步处理方式是采用回调函数的方式来进行处理的所以如果想要
Promise
执行机制——共有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败) & 宏任务(主线) 微任务(穿插)
深入探讨
Promise
之前,有个概念先交代一下,有助于对后文进行了解。
通常,我们把消息队列中的任务成为宏任务,而每一个宏任务中都包含了一个微任务队列。等到当前宏任务中的主要任务执行完成了以后,渲染引擎其实并不着急执行下一个宏任务,而是先去执行当前宏任务中的微任务。
只是引入了概念,我想大家会跟我有同样的疑惑,平常大部分的开发中
let uploadData={
type :formData.award_type,
count :formData.award_send_info_11 || formData.award_send_info_23
import
promise
PendingLock from '
promise
-pending-lock' ;
function task ( ) {
return
Promise
. resolve ( { } ) ;
const fn =
promise
PendingLock ( task ) ;
Promise
. all ( [ fn ( ) , fn ( ) ] )
. then ( ( [ r1 , r2 ] ) => {
console . log ( r1 === r2 ) ; // true
} ) ;
注意:如果task函数具有params,则应提供hashParams函数,以将p
本文实例讲述了JS手写一个自定义
Promise
操作。分享给大家供大家参考,具体如下:
经常在面试题中会看到,让你实现一个Promsie,或者问你实现
Promise
的原理,所以今天就尝试利用class类的形式来实现一个
Promise
为了不与原生的
Promise
命名冲突,这里就简单命名为My
Promise
.
class My
Promise
{
constructor(executor) {
let _this = this
this.state = 'pending' // 当前状态
this.value = undefined // 存储成功的值
this.reason =
拒绝了(rejected)
这个承诺一旦从等待状态变成为其他状态就永远不能更改状态了,也就是说一旦状态变为 resolved 后,就不能再次改变
new
Promise
((resolve, reject) => {
resolve('success')
reject('reject') // 无效
当我们在构造
Promise
的时候,构造函数内部的代码是立即执行的
new
Promise
((resolve, reje
本文实例讲述了ES6基础之
Promise
对象用法。分享给大家供大家参考,具体如下:
Promise
对象
1.
Promise
对象是ES6对异步编程的一种解决方案,它有以下两个特点:
Promise
对象代表一个异步操作,它只有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和Rejected(已失败),并且该状态不会受外界的影响
Promise
对象的状态改变,只有两种可能:从 Pending 变为 Resolved 或者从 Pending 变为 Rejected,并且一旦状态改变,就不会再变,任何时候都可以得到这个结果
2.
Promise
对象的
Promise
对象有三种状态: Pending –
Promise
对象的初始状态,等到任务的完成或者被拒绝;Resolved – 任务执行完成并且成功的状态;Rejected – 任务执行完成并且失败的状态;
Promise
的状态只可能从Pending状态转到Resolved状态或者Rejected状态,而且不能逆向转换,同时Resolved状态和Rejected状态也不能相互转换;
Promise
对象必须实现then方法,then是
promise
规范的核心,而且then方法也必须返回一个
Promise
对象,同一个
Promise
对象可以注册多个then方法,并且回调的执行顺序跟它们的注册顺序一致;
then方法接受两个回调函数,它们分别为:成功时的回调和失败时的回调;并且它们分别在:
Promise
由Pending状态转换到Resolved状态时被调用和在
Promise
由Pending状态转换到Rejected状态时被调用。
一种很常见的场景应该就是网络请求
我们封装一个网络请求的函数,因为不能立即拿到结果,所以不能像简单的3+4=7一样将结果返回
所以往往我们会传入另一个函数,在数据请求成功时,将数据通过传入的函数回调出去
如果只是一个简单的网络请求,那么这种方案不会给我们带来很大的麻烦
但是,当网络请求非常复
自己一直想要用node操作db.count()去获取某个表的长度,奈何用collection.find().count()却又一直获取不到,查看了许多文章,都没有什么详细的解释,官方文档也是吧啦吧啦一大堆。。。
collection.find().count()获取的一直为
Promise
{ <pending> },需要用
Promise
去解决,博客中也进行了详细解释。最后自己也认真的看了看count(),简单的总结了一下。