我正试图找出如何以不同的方式进行JavaScript回调。
我当前的回调样式,将回调传递给函数,然后函数调用回调。例如:
函数调用
doSomething(function(data){
   console.log(data);
});函数
function doSomething(callback) {
    // Call the callback
    callback("someData");
}这是我正在使用的当前回调样式。但是我已经看到了以不同的方式进行回调的库。例如:
函数调用
doSomething().success(function(data){
   console.log(data);
});这是如何工作的,谁能为我概述一个简单的例子吗?耽误您时间,实在对不起。
发布于 2013-07-12 10:49:30
这是承诺库的实现。jQuery有一个叫做延迟的实现,另一个是问:。
doSomething看起来像这样,使用jQuery。
function doSomething() {
   var dfd = $.deferred();
   // do your logic
   // eventually call dfd.resolve();
   return dfd.promise();
}那就叫它,用
doSomething().then(function() {
   // do something else
});这个模式的好处是,您可以有多个回调和错误回调。
发布于 2013-07-12 10:57:41
你所描述的风格通常被称为承诺。jQuery有承诺,但他们的文档称它们为"Deferreds“,这是承诺/A规范的一个实现;还有其他几个承诺库,包括问:。(YUI还包含一个承诺实现。)
最近(2013年年中)有一堆关于承诺的博客文章,所以应该很容易找到更多关于承诺的信息,无论是作为一种模式还是关于具体的实现。值得深入研究几个实现的源代码,以了解具体细节,但在高层,您可以想到这样的承诺:
done,将回调函数作为参数传递给done。发布于 2013-07-12 10:54:39
这里不是很简单吗?
函数
doSomething = new Object();
doSomething.success = function(callback) {
    // Call the callback
    callback("someData");
}因此,它只是一个用成员“成功”扩展的对象,这是一个函数。
https://stackoverflow.com/questions/17613225
复制相似问题