介绍
在Javascript的世界里面,所有代码都是单线程执行的。这导致Javascript的网络操作、浏览器世界这些操作都是异步执行的。
异步执行可以通过回调函数实现,但是回调函数有很多的问题:回调地狱、剥夺函数的返回能力等等。
而Promise就是一个很强大地执行异步操纵的解决方案。它将异步执行的函数的代码执行过程和对结果的处理分开了。首先执行该异步函数,然后承诺在未来的某一个时刻对结果进行处理。
使用
下面对Promise对象进行测试。首先通过setTimeout
函数来模拟异步操作,然后用Promise包装执行。
// 返回一个模拟异步执行的任务
// 当不传入isSuccess参数的时候,
// 该异步任务有百分之五十的可能性执行成功,百分之五十的可能性执行失败
const getAsyncByTime = function(timeMs, isSuccess){
return (resolve, reject) => {
const flag = Math.random() * 2 | 0;
setTimeout(function(){
if(isSuccess || flag == 0){
resolve(`success after