function _fetch(fetch_promise, timeout) {

  var abort_fn = null;  //这是一个能够被reject的promise  var abort_promise = new Promise(function(resolve, reject) {         abort_fn = function() {            reject('abort promise');         };  });  //这里应用Promise.race,以最快 resolve 或 reject 的后果来传入后续绑定的回调   var abortable_promise = Promise.race([         fetch_promise,         abort_promise   ]);   setTimeout(function() {         abort_fn();    }, timeout);   return abortable_promise;

}

//usage:
_fetch(fetch('//a.com/b/c'), 2000)

.then(function(res) {    console.log(res)}, function(err) {    console.log(err);})