Promise 介绍

Promise 初识

promise 是一个 es6 的语法但是它可以通过 polyfill 在 es5 中使用。
我们在非编译的环境下也可以放心地使用 Promise

生成 promise 的 4 种方式

  1. 通过 new Promise
new Promise((reslove, reject) => {
   
	//! 注意这里可能抛出异常
	doSomething(function (err, data) {
   
		if (err) {
   
			reject(err);
		} else {
   
			resolve(data);
		}
	});
});
  1. 通过 Promise.resolve
function check() {
   
	let pms = Promise.resolve(true);
	if (needLogin) pms = checkLogin();
	if (needAdmin) pms = pms.then((x) => x && checkAdmin());
	return pms;
}
  1. 通过 Promise.reject
function someSpecialRequest() {
   
	return http
		.post("/some/xxx", someData)
		.then((x) => {
   
			// dosomething
		})
		.catch((x) => {
   
			if (x.code == 2001) {
   
				return true;
			}
			return Promise.reject(x);
		});
}
  1. 通过 async 函数
async function() {
   
	let ok = true;
	if(needLogin)
		ok = await checkLogin();
	if(needAdmin&&ok)
		ok = await checkAdmin()
	return ok;
}

promise 的 3 个状态

  1. pending 等待中
new Promise((reslove, reject) => {
   
	console.log(1);
	resolve();
}).then(function () {
   
	console.log(3);
});
console.log(2);
// 输出 1 2 3
  1. resolve 状态
Promise.resolve()
	.then(function () {
   
		return stepOne();
	})
	.then(function () {
   
		// 等待stepOne结束才会执行
		return stepTwo();
	})
	.then(function () {
   
		return stepThree();
	})
	.catch(function (err) {
   
		console.log(err);
	});

Promise.resolve().then(function 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A:qml Promise 是 QML 中用于处理异步操作的 Promise 实现。它使用 Promise/A+ 的规范,提供了 Promise 构造函数和一些 Promise 方法,可以用来处理异步操作。 Promise 构造函数可以接收一个函数作为参数,这个函数会在 Promise 被创建时立即执行,函数中通常包含异步操作,并且需要返回一个 Promise 对象。在异步操作完成时,可以调用 Promise 对象的 resolve 方法来标记异步操作成功,如果异步操作失败,也可以调用 Promise 对象的 reject 方法来标记异步操作失败。 Promise 对象提供了 then 方法和 catch 方法,可以在异步操作完成后进行回调操作。then 方法可以接收两个函数作为参数,第一个函数会在异步操作成功时调用,第二个函数会在异步操作失败时调用。catch 方法只接收一个函数作为参数,会在异步操作失败时调用。 以下是 Promise 对象的所有函数和它们的作用: - Promise(callback):创建一个 Promise 对象,callback 为函数参数,它在 Promise 对象被创建时立即执行,通常包含异步操作,并返回一个 Promise 对象。 - Promise.prototype.then(onFulfilled, onRejected):注册异步操作成功或失败时的回调函数。 - Promise.prototype.catch(onRejected):注册异步操作失败时的回调函数。 - Promise.all(iterable):接收一个可迭代对象作为参数,返回一个 Promise 对象,当所有 Promise 对象都成功时,返回所有 Promise 的结果数组,如果有 Promise 失败,返回失败的 Promise 的结果。 - Promise.race(iterable):接收一个可迭代对象作为参数,返回一个 Promise 对象,当第一个 Promise 对象成功或失败时,返回第一个 Promise 的结果或错误信息。 - Promise.reject(reason):返回一个 Promise 对象,它会立即被标记为失败,并带有一个原因。 - Promise.resolve(value):返回一个 Promise 对象,它会立即被标记为成功,并带有一个值。 使用 qml Promise 可以方便地处理异步操作,提高代码可读性和可维护性,尤其对于使用 QML 开发手机应用程序的开发人员来说,更是非常实用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值