JavaScript ES6 - Promise

Promise 是 ES6 用来处理非同步的一种方法,至于是处理什么问题呢?

非同步写法不一致非同步程式码过巢无法同时执行

jQuery 来说 ajax 的非同步处理就有很多种,这就是第一点,非同步写法不一致
接下来用 jQueryajax 搭配 random user 的 api 来举例程式码过巢的问题:

$.ajax({  url: url}).done(function(res){  const seed = res.info.seed;  console.log(seed);  $.ajax({    url: `${url}?seed=${seed}`  }).done(function(res2){    console.log(res2);  });});

上述的程式码,在第一次抓取资料完成的时候,先捞取当笔资料的 seed,再把 seed 加上 url 来抓取同一笔资料
ps. 这个要阅读 random user 的 api

而这个动作只有捞取两次的资料,当要捞取无数笔的资料就会变成这样:

$.ajax({  url: url}).done(function(res){  const seed = res.info.seed;  console.log(seed);  $.ajax({    url: `${url}?seed=${seed}`  }).done(function(res2){    console.log(res2);    $.ajax({        ...    }).done(function(){        $.ajax({            ...        }).done(function(){            ...        });    });  });});

有没有发现过巢的问题了? 何况还不易阅读,而且如果某几笔资料是要同时执行的时候,也无法。

Promise 的出现,就可以解决上述的问题,Promise 的文章 goolge 之后有很多种,这里直接简单扼要的说明
Promise 在执行时会有一个等待期,之后就只会有两种结果,要马是成功(resolve),要马是失败(reject),成功的话就调用 .then() 失败则是使用 .catch()


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章