var $jobApplication = $.Deferred();
$jobApplication
.progress(displayState)
.done(acceptContract)
.done(relocate)
.fail(keepCalmAndDrinkWine);
function displayState(payload){
console.log(payload.state);
if (payload.job){
$jobApplication.resolve(payload.job);
}
}
$jobApplication.notify({
state: "shortlist"
});
$jobApplication.notify({
state: "phone_interview",
date: "2013-01-23"
});
$jobApplication.notify({
state: "technical_interview",
date: "2013-02-11"
});
$jobApplication.notify({
state: "physical_interview",
date: "2013-02-14"
});
$jobApplication.notify({
state: "salary_negociation",
job: {
role: "Software Engineer",
company: "BBC",
starts: "2013-03-04"
},
date: "2013-02-14"
});
function acceptContract(jobOffer){
console.log("Contract accepted with the following details: ");
console.log(jobOffer);
}
function keepCalmAndDrinkWine(err){
console.log("Too bad it did not work for this reason: %s ", err);
}
function relocate(){
console.log("Relocating (a new Promise ;-)) ");
}
這是我的例子來描述一些問題,我有一些麻煩。JQuery推遲 - 添加回調後定義的鏈接
我想添加一些回調到「acceptContract」函數。當「acceptContract」運行時,我的新回調會立即運行。
舉例來說,我的第一個解決方案是添加這些代碼。
acceptContract = $jobApplication.promise();
acceptContract.done(function() {
console.log('call your mom')
}).done(function() {
console.log('be happy')
})
此代碼工作,但一個小故障。鏈完成後工作。
控制檯:
這是我得到:
phone_interview
technical_interview
physical_interview
salary_negociation
Contract accepted with the following details:
Object {role: "Software Engineer", company: "BBC", starts: "2013-03-04"}
Relocating (a new Promise ;-))
call your mom
be happy
這是我想到:
phone_interview
technical_interview
physical_interview
salary_negociation
Contract accepted with the following details:
Object {role: "Software Engineer", company: "BBC", starts: "2013-03-04"}
call your mom
be happy
Relocating (a new Promise ;-))
有什麼問題? – robbrit
要清楚,你預期會發生什麼?什麼是*「毛刺」*?這將是一個邏輯錯誤,如果我們不知道你的預期邏輯是什麼,那麼我們所能說的就是按預期工作。 –
我希望在 「合同被接受並具有以下詳細信息後執行回調後發生我: 對象{角色:」軟件工程師「,公司:」BBC「,起始:」2013-03-04「}」 這條線。 – Samed