我有三个我希望彼此执行的功能。顺序很重要,因为func2依赖于func1的数据和func2的func3。到目前为止我一直在使用回调。我想使用jQuery.when()。then()。done()。我无法理解那里的教程。一些主题使用result = result & mask;
和其他人不。我不想使用超时。因为我现在不总是执行函数所花费的确切时间。如果有人能告诉我它是如何用jQuery完成的,我将非常感激。
修改
这就是我现在正在做的事情。但是,当有很多函数需要按顺序执行时,我希望将我的知识发展为使用更好或更易于管理的东西。
var def = jQuery.Deferred();
答案 0 :(得分:1)
如果要处理异步代码,则应使用promises:
class MainWindow
{
List<Landen> landenList;
public MainWindow()
{
InitializeComponent();
this.landenList = new LandenStedenTalenEntities();
landenListBox.ItemsSource = (from Landen in this.landenList select Landen.Naam).ToList();
}
}
编辑1 - 将承诺放在函数
中答案 1 :(得分:1)
jQuery&#39; then()
是Javascript中Promises
的自定义实现。我建议使用大多数现代浏览器支持的本机版本。您想要实现的目标可以通过两种不同的方式实现:
Promise.defer()
(已弃用):function first() {
var deferred = Promise.defer();
doSomethingAsynchronously(function (result) {
if (result.success)
deferred.resolve(result.data);
else
deferred.reject(result.error);
});
return deferred.promise;
}
new Promise(function(resolve, reject) {})
function second(someData) {
return new Promise(function(resolve, reject) {
doSomethingElseAsynchronously(someData, function (result) {
if (result.success)
resolve(result.data);
else
reject(result.error);
});
})
}
在这两种情况下,您都可以这样做:
first().then(function(data) {
return second(data)
}).then(function(data) {
return third(data);
}).catch(function(error) {
console.error(error);
});
现在这是本机Javascript Promises。 jQuery的承诺可能略有不同,但我认为理解上面关于本机Promises的解释将有助于你理解有关jQuery实现的教程。
答案 2 :(得分:0)
您的要求很简单,可以像下面这样完成。为什么要让它复杂化。
function function1(){
//On completion
function2(data);
}
function function2(data){
//On completion
function3(newdata);
}
function function3(nedata){
//Function 3 code here
}