promise怎么实现异步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了promise怎么实现异步相关的知识,希望对你有一定的参考价值。

参考技术A 搜索博文/帖子/用户
登录
理解promise,实现异步的同步编写 原创
2018-04-08 12:07:55
1点赞

zimushuang

码龄9年

关注
MND解释:Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。

我的理解就是promise是一种完成异步功能并检查状态触发回调的机制。

1、两种常用创建方式:
声明一个变量:(声明一个promise类型的对象)

const myFirstPromise = new Promise((resolve, reject) =>
// ?做一些异步操作,最终会调用下面两者之一:
//
resolve(result); // fulfilled
// ?或
reject(error); // rejected
);
声明一个函数:(返回一个promise类型的对象)

function myAsyncFunction(url)
return new Promise((resolve, reject) =>
const xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onload = () => resolve(xhr.responseText);
xhr.onerror = () => reject(xhr.statusText);
xhr.send();
);
;
显而易见,如果需要给异步过程传递函数,当然要优先选择第2种方式了。

2、promise的状态
promise的中文释义为承诺,对象如其名,在未来的某一个时刻将会有状态变化进而有真实的结果。当代码执行到变量myFirstPromise或调用函数myAsyncFunction时,得到的都应该是一个空值或空对象,同时会有一个new promise()对象被构建。此时的promise对象处于一种名为pending状态,表示为初始状态。此时promise开始执行。

new promise( /*...code...*/ ) 中的code只是相当于一个参数被传递给promise对象,和以往的函数调用传参的不同在于:code是函数类型的参数 (resolve, rejec
义母李婆婆不由得笑道:“你这孩子,给娘讲什么笑话,尽哄我开心。等下娘就去刘氏那里先借些米面回来,咱娘儿俩先凑合这一顿。”
看到义母不信,范宇只得劝道:“娘放心和孩儿去镇上,就去那家太白楼,保证娘吃的满意。”
听着范宇不象是在说假话,李婆婆不由得皱眉道:“儿啊,你是不是身上还有能典当的值钱东西?可不要大手大脚的败家,等过些日子,娘给你相个媳妇,你留着过日子岂不是好。什么太白楼,娘是坚决不会去的。”
范宇这时饿的难受,可是看到义母又不肯走,只能耐心解释。
“娘,你可放心吧,孩儿被范连从家中赶出来,现在身无分文,哪有半点值钱的东西。就是身上这身衣服,当了也就没得穿了。我自有本事,不让娘失望就是。”范宇拉着李婆婆的袖子道。
“娘可是打小就看着你长大的,除了会收拾田地,你又有什么挣钱的本事了?”李婆婆好奇的问道。
范宇见义母态度松动,便呵呵一笑道:“现在先不说,等到了太白楼,娘自然就知道。”
李婆婆的脸色一肃道:“你莫不是想要带为娘去吃霸王餐不成?娘劝你不要走这等歪门斜道,而且娘也舍不下这脸面。若是坏了名声,娘可比死还难受,你也不能做此等下作事!”
“放心吧娘。”范宇上前拉着义母李婆婆的手臂道:“孩儿可丢不起这个人,到了太白楼,你自然会知道。”
有心死活也不肯去,可是李婆婆却又真怕范宇去太白楼碰瓷吃白食。犹豫之下,还是决定跟着范宇一同前往。若是这个义子真要做些没
参考技术B 最好的方法就是实现同步,然后在里面操作就可以了。

微信小程序api怎么promise化

默认情况下,小程序官方提供的异步API都是基于回调函数实现的,这样就容易造成回调地狱的问题,代码的可读性、维护性差。API Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API,升级改造为基于 Promise 的异步 API,从而提高代码的可读性、维护性,避免回调地狱的问题。实现API Promise化主要依赖于miniprogram-api-promise这个第三方的 npm 包。首先需要确认已经正确安装了node,使用的开发工具为微信官方的微信开发者工具。

    在项目文件夹下对项目进行初始化,执行npm init -y 此时项目文件夹下会创建package.json文件。

    执行npm i --save miniprogram-api-promise安装第三方包。此时会在项目根目录下创建node_modules文件夹。

    选择  工具-->构建npm  等待构建完成点击确定,此时会创建miniprogram_npm文件夹。

在入口文件app.js中按需引入。

import promisifyAll from "miniprogram-api-promise"

const wxp=wx.p=

promisifyAll(wx,wxp)

然后就可以通过wx.p来调用promise化的api。举个例子在test.js文件中

async getTestData()

const data:res=await wx.p.request(methods:'GET',url: 'https://xxx.xxx.xx', )

参考技术A 可以通过编写代码的方式手动实现,也可以使用第三方包来进行实现,还可以使用官方推出的第三方库,实现小程序的promise化。 参考技术B 可以对微信小程序进行扩展,也可以对回调函数来进行更改,这样就可以改变微信小程序的模式。 参考技术C 可以通过一些程序进行编写,也可以进行敲代码,还可以选择一些其他的方式来进行程序的编写,这样就可以让小程序变得更加快速。

以上是关于promise怎么实现异步的主要内容,如果未能解决你的问题,请参考以下文章

到底什么是promise?有什么用promise怎么用

微信小程序api怎么promise化

javascript异步下载 Promise实现

如何使用promise获取异步方法的结果?

简单实现异步编程promise模式

promiseall退出条件