异步编程一 初探 Javascript Promise

来源:互联网 发布:autocad2008软件下载 编辑:程序博客网 时间:2024/06/01 08:17

 promise被原生JavaScript支持,可以说是前端的一个里程碑。

用法(代码参照自https://developers.google.cn):

var promise = new Promise(function(resolve, reject) {  // do a thing, possibly async, then…  if (/* everything turned out fine */) {    resolve("Stuff worked!");  }  else {    reject(Error("It broke"));  }});promise.then(function(result) {  console.log(result); // "Stuff worked!"}, function(err) {  console.log(err); // Error: "It broke"});

当异步执行成功时,就会调用then 第一个方法;如果失败,就调用第二个方法;


下面来看ajax例子:

function get(url) {  // Return a new promise.  return new Promise(function(resolve, reject) {    // Do the usual XHR stuff    var req = new XMLHttpRequest();    req.open('GET', url);    req.onload = function() {      // This is called even on 404 etc      // so check the status      if (req.status == 200) {        // Resolve the promise with the response text        resolve(req.response);      }      else {        // Otherwise reject with the status text        // which will hopefully be a meaningful error        reject(Error(req.statusText));      }    };    // Handle network errors    req.onerror = function() {      reject(Error("Network Error"));    };    // Make the request    req.send();  });}


原创粉丝点击