function getUserInput(firstName, lastName, callback) { // Do other stuff to validate firstName/lastName here // Now save the names if(callback && (callback instanceof Function){ callback (firstName, lastName); } }
f1.on('done', f2); function f1(){ setTimeout(function () { // f1的任務代碼 f1.trigger('done'); }, 1000); }
var wait = function(dtd){ var dtd = $.Deferred(); //在函數內部,新建一個Deferred對象 var tasks = function(){ alert("執行完畢!"); dtd.resolve(); // 改變Deferred對象的執行狀態 }; setTimeout(tasks,5000); return dtd.promise(); // 返回promise對象 }; $.when(wait()) .done(function(){ alert("哈哈,成功了!"); }) .fail(function(){ alert("出錯啦!"); });
四、Promise對象javascript
function timeout(ms) { return new Promise((resolve, reject) => { setTimeout(resolve, ms, 'done'); }); } timeout(100).then(function(value) { // success }, function(error) { // failure });
function add(x1, x2) { return new Promise(function (resolve, reject) { var res = x1 + x2; console.log(res); resolve(res); }); } add(1, 2).then(function (res) { return add(3, 4); }).then(function () { return add(4,5); })
getJSON('/posts.json').then(function(posts) { // ... }).catch(function(error) { // 處理 getJSON 和 前一個回調函數運行時發生的錯誤 console.log('發生錯誤!', error); });
const p1 = new Promise((resolve, reject) => { resolve('hello'); }) .then(result => result) .catch(e => e); const p2 = new Promise((resolve, reject) => { throw new Error('報錯了'); }) .then(result => result) .catch(e => e); Promise.all([p1, p2]) .then(result => console.log(result)) .catch(e => console.log(e));