我正在使用Q.js库来做承诺。我已经尝试了以下场景,其中一个函数在执行某些代码之前等待另一个函数来解析延迟,并且它可以与jQuery本机promise一起使用。但是,相同的代码会立即返回Q.js.有什么想法吗?
小提琴:http://jsfiddle.net/ArN8F/5/
HTML:
<button id='go'>Go</button>
<p id='txt'></p>
<p id='txt2'></p>
jQuery代码(等待2秒然后更改文本):
$(document).ready(function () {
var dfd = $.Deferred();
$('#go').click(function () {
$('#txt').text('Clicked!');
promised();
setTimeout(dfd.resolve, 2000);
});
function promised() {
$.when(dfd).done(function () {
$('#txt2').text('Done');
});
}
})
Q.js代码(立即更改文本):
$(document).ready(function () {
var dfd = Q.defer();
$('#go').click(function () {
$('#txt').text('Clicked!');
promised();
setTimeout(dfd.resolve, 2000);
});
function promised() {
Q.when(dfd, function () {
$('#txt2').text('Done');
});
}
})
答案 0 :(得分:2)