我们正在开发 Windows 8 javascript 应用程序,并创建了所有必要的框架来执行所需的操作。该框架到处都使用 jQuery 代码。
现在,我们也必须在后台任务中使用相同的框架,但事实证明,jquery 在后台任务中不受支持,因为它没有有效的窗口对象。
由于我们只使用了很少的 jQuery 方法,我们决定创建一个包装类,当在后台任务中使用它时将充当 jQuery。
我们坚持使用 winJs.promise 实现 jquery 的延迟功能。问题是在 jQuery 中我们使用 .done().fail() 来处理解析和拒绝,而在 winjs.promise 中,.done() 在方法队列中最后实现并且没有失败方法。
我们尝试实现失败方法,但无法实现 .done().fail()。
谁能给出任何建议我们如何在包装类中使用 winjs.promise 来实现它?
var $ = (function () {
function $() {
}
$.deferred = function () {
// implement deferred using WinJs.Promise
}
然后在这样的框架中使用它:
function divide(num1, num2) {
var deferred = $.deferred();
if (num2 > 0) {
return deferred.resolve(num1 / num2);
}
else {
return deferred.reject("num2 can't be zero");
}
}
divide(1, 2).done(function (value) {
console.log('Anser is:' + value);
}).fail(function (value) {
console.log('Error: ' + value);
});