jQuery Deferred有两个函数可用于实现函数的异步链接:
then()
deferred.then( doneCallbacks, failCallbacks ) Returns: DeferreddoneCallbacks解析Deferred时调用的函数或函数数组.
failCallbacks拒绝延迟时调用的函数或函数数组.
pipe()
deferred.pipe( [doneFilter] [, failFilter] ) Returns: PromisedoneFilter解析Deferred时调用的可选函数.
failFilter拒绝Deferred时调用的可选函数.
我知道then()已经存在了一段时间,pipe()因此后者必须增加一些额外的好处,但正是这种差异恰恰在于我.两者都采用了几乎相同的回调参数,尽管它们的名称不同,返回a Deferred和返回a 之间的区别Promise似乎很小.
我已经一遍又一遍地阅读官方文档,但总是发现它们太"密集"而无法真正地包围我的搜索已经找到了很多关于这个或另一个特征的讨论,但我没有发现任何真正澄清不同的东西每个人的利弊.
那么什么时候使用then它更好,pipe什么时候使用更好?
Felix的出色答案确实有助于阐明这两个功能的区别.但我想知道是否有时候功能性then()比那更好pipe().
很明显,它pipe()比then()以前更强大,似乎前者可以做后者可以做的任何事情.使用的一个原因then()可能是它的名称反映了它作为处理相同数据的一系列函数的终止的作用.
但是有一个用例需要then()返回由于它返回一个新的而Deferred无法完成的原始文件吗?pipe()Promise
jquery asynchronous decoupling jquery-chaining jquery-deferred
我在解决这个问题上遇到了问题.我首先尝试将脚本标记设置为字符串,然后使用jquery replaceWith()在页面加载后将它们添加到文档中:
var a = '<script type="text/javascript">some script here</script>';
$('#someelement').replaceWith(a);
Run Code Online (Sandbox Code Playgroud)
但是我在那个var上得到了字符串文字错误.然后我尝试编码字符串,如:
var a = '&left;script type="text/javascript">some script here<\/script>';
Run Code Online (Sandbox Code Playgroud)
但发送它replaceWith()只是将该字符串输出到浏览器.
有人可以告诉我你如何<script>在页面加载后动态地将标签添加到浏览器中,理想情况下通过jQuery?
对于我正在编写的插件,我在很大程度上依赖于localStorage.所有用户设置都存储在其中.某些设置要求用户使用写正则表达式,如果他们的正则表达式规则在某些时候消失,他们会很难过.所以现在我想知道localStorage是多么持久.
从规格:
用户代理应仅出于安全原因或用户请求时从本地存储区域过期数据.
以上看起来就像客户端上的cookie一样.即,当用户清除所有浏览器数据(历史记录,cookie,缓存等)时,localStorage也将被截断.这个假设是否正确?
二进制搜索树比哈希表有什么优势?
哈希表可以在Theta(1)时间查找任何元素,并且添加元素也同样容易....但我不确定反过来的优势.
有人可以提供一个很好的描述Lambda是什么?我们有一个标签,他们是C#问题的秘密,但我还没有找到一个很好的定义和解释他们是什么.
我在map和foreach中看到的唯一区别map是返回一个数组而forEach不是.但是,我甚至不理解方法的最后一行forEach" func.call(scope, this[i], i, this);".例如,是不是" this"和" scope"指的是同一个对象而不是this[i]并且i指的是循环中的当前值?
我在另一篇文章中注意到有人说" forEach当你想根据列表的每个元素做某事时使用.例如,你可能会在页面上添加内容.基本上,它非常适合你想要的"副作用".我不知道副作用是什么意思.
Array.prototype.map = function(fnc) {
var a = new Array(this.length);
for (var i = 0; i < this.length; i++) {
a[i] = fnc(this[i]);
}
return a;
}
Array.prototype.forEach = function(func, scope) {
scope = scope || this;
for (var i = 0, l = this.length; i < l; i++) {
func.call(scope, this[i], i, this);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,这些方法在javascript中是否有任何实际用途(因为我们不更新数据库),除了操纵这样的数字:
alert([1,2,3,4].map(function(x){ …Run Code Online (Sandbox Code Playgroud) 有关x86 CPU权限的几个问题:
为什么大多数操作系统都没有使用环1和环2?是仅仅维护代码与其他架构的兼容性,还是有更好的理由?
是否有任何操作系统实际使用这些环?或者他们完全没用?
期货和承诺都会阻止,直到他们计算出它们的价值,那么它们之间有什么区别呢?
我通过使用Fork&Edit此文件文件按钮在github上向rails repo 打开了一个pull请求.
现在,在获得有关我的PR的反馈后,我想添加更多提交.所以这就是我结束的事情
$ git clone git@github.com:gaurish/rails.git #my forked repo
$ git rebase -i 785a2e5 #commit hash of my commit using which PR was opened
$ git checkout patch-3 #branch name I had to send my commits under to be shown in that PR
$ git commit -am "Changes done as per feedback"
$ git push origin patch-3
Run Code Online (Sandbox Code Playgroud)
这很好,但似乎是一个非常复杂的工作流程.也许我错了,这里错了?
我的问题是:我这样做是正确的吗?如果没有,那么这样做的正确方法是什么?
javascript ×3
jquery ×2
terminology ×2
arrays ×1
asynchronous ×1
c ×1
clojure ×1
cpu ×1
decoupling ×1
dictionary ×1
foreach ×1
future ×1
git ×1
github ×1
hashtable ×1
lambda ×1
persistence ×1
printf ×1
privileges ×1
promise ×1
prototype ×1
pull-request ×1
script-tag ×1
x86 ×1