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);})