ben*_*tah 5 javascript jquery jquery-deferred
这是我的基本情况:
function somePostThing() {
return $post("/someUrl").done(doSomething);
}
function doSomething(data) {
// do stuff with the data
}
var object = {};
object.deferred = somePostThing();
// A few cycles later, object.deferred may be resolved or unresolved
object.deferred.done(function () { /* ... */ });
Run Code Online (Sandbox Code Playgroud)
最后一行可能有效,也可能无效,因为done在已解析延迟对象的情况下不会触发.我希望能够做到这样的事情:
function doSomethingWithData(data) {
// do stuff
}
var value;
if (object.deferred.isResolved()) doSomethingWithData(object.deferred.value());
else object.deferred.done(doSomethingWithData);
Run Code Online (Sandbox Code Playgroud)
我如何获得已经解决的价值jQuery.Deferred()?
不,这正是为什么整个"延期"机制应运而生的原因.如果在异步过程解决后传入"完成"功能,它肯定会立即执行.
来自jQuery API文档:
如果在解析Deferred之后通过deferred.then()添加了更多函数,则会立即使用先前提供的参数调用它们.
对于".done()"函数也是如此.