【vb 树形目录源码】【伍佰源码网】【过生日源码】jquery deferred源码

时间:2024-12-24 06:56:12 编辑:负64的源码 来源:mustache源码解读

1.petite-vue源码剖析-事件绑定v-on的源码工作原理
2.JQuery 的 deferred . promise对象
3.jquery中deferred用的多吗
4.deferred.then 和 deferred.done.fail 的不同

jquery deferred源码

petite-vue源码剖析-事件绑定v-on的工作原理

       探索Petite-Vue的内部构造,从模板解析到事件绑定机制

       在逐步了解Petite-Vue源码的源码过程中,我们从在线渲染开始,源码一步步剖析其响应式系统和安全沙箱模型。源码特别关注的源码是,它如何通过利用JavaScript引擎的源码vb 树形目录源码SMI特性,优化依赖清理算法,源码这对于理解Vue3的源码内部运作至关重要。这无疑是源码一个理想的入门资源,对Vue3源码有深入了解的源码欲望,不容错过。源码

       在Petite-Vue中,源码事件绑定作为一种指令(directives),源码如我们所熟知的源码@click,为开发者带来极大便利。源码点击元素时,框架会自动处理绑定,伍佰源码网无需繁琐的jQuery操作,简化了开发流程。

       解析模板时,walk方法会遍历元素的特性集合el.attributes。当遇到以v-on或@为前缀的属性时,会将名称和值加入deferred队列,策略上,事件绑定被置于最后处理,过生日源码这是因为整个元素和子元素的属性绑定、v-modal以及事件绑定需先完成,以确保正确顺序和执行时机。

       深入理解了v-bind和v-on的工作原理后,让我们继续探索下一个关键部分——v-model。它如何协同工作,将为我们揭示Petite-Vue更为完整的内在逻辑。

JQuery 的objectarx插件源码 deferred . promise对象

       你说的这段描述是对 jQuery(selector).promise()的描述,并不是 jQuery.Deferred() 的描述。

       原文是:

Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished.

       而这段话是说:

jQuery(selector).promise() 函数是返回一个 Promise 对象,这个对象的作用是当绑定到集合也就是$('div')这样取到的集合的指定类型的所有动作(promise方法的第一个参数 type ,默认是fx,也就是动画)是否已经完成了。

       英文水平有限,有些地方看不怎么懂,这话说得有点乱,MGC钱包源码不过意思应该是这样的,举个例子:

$('#message')

       .animate({ width:, height:}, )

       .promise()

       .done(function(){

           console.log('animate end');

       });

       也可以写成:

$('#message').animate({ width:, height:}, );

       var promise = $('#message').promise();

       promise.done(function(){

           console.log('animate end');

       });

       这里的 $('#message') 就是所说的collection,

       而动画 animate (即 fx)就是 certain type,

       里面的所有动作就是 action queue,当然,这里只有1个,就是默认的fx (但是文档中没有找到介绍其它的类型)。

       后面的 var promise = xxx 就是指返回的 Promise对象,这个对象在收到animate 方法里面的信号(这个信号包括 resolve, reject, notify, resolveWith, rejectWith, and notifyWith等)可以调用方法done(当然还有不少其它的方法,这里没用到就不说了,自己看文档吧),然后执行done的回调函数了。

       animate方法会自己发送promise的信号,不用手动去处理。具体细节可以参考 jQuery.Deferred() 方法,在API的介绍中有这个方法的使用示例。

       需要注意的是, jQuery(selector).promise()和jQuery.Deferred().promise()是不一样的。

       从目前我知道的来说,jQuery(selector).promise() 是专门用来处理jquery中的动画(animate)使用的,而jQuery.Deferred().promise()使用的范围更广,没看源码,不过猜一下,我觉得 jQuery(selector).promise()是jQuery在动画的时候对jQuery.Deferred().promise()的特殊实现(或者叫做功能封装)。

       然后再说一下jQuery.Deferred().promise()吧。它的一般用法为:

var defer= $.Deferred();

       $.when(defer.promise()).then<done|fail|....>(参数...)

       defer.resolve('传参数或留空');

       defer.reject('传参数或留空');

       defer.notify('传参数或留空');

       // ..... 其它信号

       实例请自己去看API页面。

       上面的defer是一个延迟对象(deferred)引用,表示这个对象的信号会在将来发出。

       接下来的 $.when(defer.promise()) 是指jQuery 要监视 defer的信号,收到信号后执行后面的then(或者done, fail或其它)的函数。而后面的defer.resolve<reject|notify>则是发出信号,通知jQuery延迟调用已经执行了,jQuery收到信号后,就去调用这个延迟的promise()后面的函数。

jquery中deferred用的多吗

       å¼€å‘网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。

        通常的解决方法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。

        但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了deferred对象。

        简单说,deferred对象就是jQuery的回调函数解决方案。 在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行。

deferred.then 和 deferred.done.fail 的不同

       ã€€ã€€then()和done().fail().process()的差别是

       ã€€ã€€then: function( /* fnDone, fnFail, fnProgress */ )会生成一个新的deferred,return jQuery.Deferred(function( newDefer )。初始化这个新deferred时,执行function( newDefer ),这个function添加一个callback func到前一个deferred。这个callback func是从老deferred到新deferred的桥梁,从deferred[ tuple[1]]到newDefer[ tuple[0] + "With" ]。对於每个deferred[ tuple[1] ],如果有对应的then()所带function( /* fnDone, fnFail, fnProgress 之一*/ ),这个函数就是

       ã€€ã€€function () {

       ã€€ã€€var returned = fn.apply( this, arguments );

       ã€€ã€€if ( returned && jQuery.isFunction( returned.promise ) ) {

       ã€€ã€€returned.promise()

       ã€€ã€€.done( newDefer.resolve )

       ã€€ã€€.fail( newDefer.reject )

       ã€€ã€€.progress( newDefer.notify );

       ã€€ã€€} else {

       ã€€ã€€newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, [ returned ] );

       ã€€ã€€}

       ã€€ã€€}

       ã€€ã€€then所带函数会被执行,返回returned,如果jQuery.isFunction( returned.promise ),则调用这个returned.promise的done、fail和progress,它们会对应触发newDefer的resolve、reject、notify; 否则 returned 传入新的deferred,newDefer执行action + “with”;

       ã€€ã€€å¦‚果没有对应的then()所带函数,简单执行newDefer[ action ]。

       ã€€ã€€ä¸Šé¢çš„第一个result是第一个result的最后一个done()的输出,前一个done的return不会传递到这里,所以result是resolve的第一个参数。

       ã€€ã€€ç¬¬äºŒä¸ªresult是第二个deferred的输出,第一个then所带的function的输入,传入第二个deferred,因此第五个done能够接受到2*3的result。

       ã€€ã€€ç¬¬ä¸‰ä¸ªresult是第三个deferred的输出,第二个then执行时,只有a,没有b,所以result是NaN。