function waitHandle(){ var dtd = $.Deferred(); // 建立一個deferred對象 var wait = function(dtd){ // 要求傳入一個 deferred對象 var task = function(){ console.log('執行完成'); dtd.resolve(); // 表示異步任務已經完成 // dtd.reject(); // 表示異步任務失敗或出錯 } setTimeout(task, 2000); return dtd.promise(); // 這裏返回promise,而不是直接反悔deferred } // 注意,這裏必定要有返回值 return wait(dtd); } var w = waitHandle(); w.then(function(){ console.log('ok1') },function(){ console.log('error1') }).then(function(){ console.log('ok2') },function(){ console.log('error2'); })
import 'babel-polyfill'; function loadImg(src) { const promise = new Promise(function (resolve, reject) { var img = document.createElement('img'); img.onload = function(){ resolve(img); } img.onerror = function(){ reject(); } img.src = src; }) return promise; } const load = async function(){ const result1 = await loadImg('xxx.png'); console.log(result1); const result2 = await loadImg('yyy.png'); console.log(result2); } load();
用法npm