当前位置:首页 » 操作系统 » promise源码

promise源码

发布时间: 2022-05-11 00:14:28

A. 哪些javaScript 框架的源代码最值得阅读和学习

推荐顺序:

underscore.js:一个JavaScript实用库,提供了一整套工具方法,github上有带注释的源码,一千多行。学习一下封装那些常用api的最佳实践。

zepto.js:jquery的移动版?源码也不多

backbone.js: 两千多行的MVC框架,在阅读angular源码之前先阅读一个经典而轻量的backbone吧

这三个是开始阅读源码比较推荐的,除此之外可以看一些UI框架,一些经典轮子之类的,比如阅读fastclick这种,学习一波手势与事件

B. 怎样开始阅读scikit-learn的源码是否值得读

RubyLouvre/avalon · GitHub Object.defineProperty的极致使用及各种黑魔法 knockout/knockout · GitHub 观察者模式的极致使用 jakearchibald/es6-promise · GitHub 目前最好的Promise实现 Polymer/observe-js 路 GitHub 强大的状态机与最短编辑。

C. 如何设置socket的Connect超时

针对套接字操作设置默认超时的概述StreamSocket类实现Windows运行时应用中的TCP套接字。TCP套接字必须建立连接才能发送或接收任何网络数据。Windows8.1、WindowsPhone8.1和WindowsServer2012中实现的基础TCP套接字会针对所有的TCP连接套接字操作设置默认超时。对于每个来源和目标地址对,在使用主机名或终结点时,默认超时为3分钟(180秒)。因此,如果目标主机名有两个IP地址,那么,只有在经过大约6分钟之后,连接操作才会超时。对于使用Windows运行时应用的客户体验来说,这个默认超时可能过长。因此,使用StreamSocket类的应用可能希望针对流套接字连接操作设置较短的自定义超时。在发送或接收网络数据时,DatagramSocket和StreamSocket类没有默认超时。因此,任何发送或接收操作都将永远等待。使用套接字的Windows运行时应用可能希望针对这些操作设置超时以获取更好的客户体验。StreamSocketListener类将永远侦听和等待传入的连接请求。如何针对套接字操作设置自定义超时JavaScript语言支持计时事件,这些事件可以按指定的时间间隔执行某些代码。JavaScript计时事件setInterval()-按指定的时间间隔(毫秒)反复执行某个函数。setTimeout()-在等待指定的毫秒之后执行一次某个函数。计时事件函数是在HTMLDOMWindow对象中实现的。WinJS命名空间为包括WinJS.Promise对象的JavaScript功能提供特殊的Windows库。timeout(timeout,promise)方法包装setTimeout函数。如果在timeout参数中指定的毫秒数内未完成承诺,则Windows应用商店应用可以使用timeout(timeout,promise)方法来取消此承诺。如果在timeout参数中指定的时间间隔内未完成套接字操作,则可以调用timeout(timeout,promise)方法并将套接字操作作为promise参数以使该操作超时。只要套接字操作仍在挂起,就能将其取消。WinJS.Promise对象和timeout(timeout,promise)方法可以与Windows运行时应用中的任何异步操作一起使用,包括所有的异步套接字操作。对于正常的完成操作,可以在timeout(timeout,promise)方法调用之后添加逗.then地。对于所有这三个类来说,使用超时的基本模型是相同的。以下讨论使用StreamSocket上的连接操作作为示例。在使用DatagramSocket或StreamSocket对象发送或接收网络数据时,或者在使用StreamSocketListener对象侦听传入连接时,可以使用相同的模型来实现超时。创建一个StreamSocket。调用timeout(timeout,promise)方法并将其中一个StreamSocket.connectAsync方法作为promise参数。在源代码的末尾添加then(successFunction,errorFunction)方法来处理成功和错误案例。在出错时,关闭套接字。在取消StreamSocket操作承诺之后,将无法再使用已取消的StreamSocket。以下示例将针对StreamSocket连接操作实现自定义超时。JavaScriptvarclientSocket=null;vartimeout=10000;//10secondsfunctionopenClient(){varserverHostName=newWindows.Networking.HostName("");varserviceName="http";//displayStatus("Client:connectionstarted.");clientSocket=newWindows.Networking.Sockets.StreamSocket();//varpromise=clientSocket.connectAsync(serverHostName,serviceName)WinJS.Promise.timeout(timeout,clientSocket.connectAsync(serverHostName,serviceName).then(function(){//displayStatus("Client:connectioncompleted.");//Doyoursocketoperationshere.},function(reason){//:thepromisemighthave//timedout,,orthere//wasanTCPissue,orseveralotherpossibilities.//displayStatus("Client:connectionfailed.");//displayStatus(reason.message);clientSocket.close();clientSocket=null;}));}

D. 套接字操作超时怎么解决

针对套接字操作设置默认超时的概述
StreamSocket
类实现
Windows
运行时应用中的
TCP
套接字。TCP
套接字必须建立连接才能发送或接收任何网络数据。Windows
8.1、Windows
Phone
8.1

Windows
Server
2012
中实现的基础
TCP
套接字会针对所有的
TCP
连接套接字操作设置默认超时。对于每个来源和目标地址对,在使用主机名或终结点时,默认超时为
3
分钟(180
秒)。因此,如果目标主机名有两个
IP
地址,那么,只有在经过大约
6
分钟之后,连接操作才会超时。对于使用
Windows
运行时应用的客户体验来说,这个默认超时可能过长。因此,使用
StreamSocket
类的应用可能希望针对流套接字连接操作设置较短的自定义超时。
在发送或接收网络数据时,DatagramSocket

StreamSocket
类没有默认超时。因此,任何发送或接收操作都将永远等待。使用套接字的
Windows
运行时应用可能希望针对这些操作设置超时以获取更好的客户体验。
StreamSocketListener
类将永远侦听和等待传入的连接请求。
如何针对套接字操作设置自定义超时
JavaScript
语言支持计时事件,这些事件可以按指定的时间间隔执行某些代码。
JavaScript
计时事件
setInterval()
-
按指定的时间间隔(毫秒)反复执行某个函数。
setTimeout()
-
在等待指定的毫秒之后执行一次某个函数。
计时事件函数是在
HTML
DOM
Window
对象中实现的。
WinJS
命名空间为包括
WinJS.Promise
对象的
JavaScript
功能提供特殊的
Windows
库。timeout(timeout,
promise)
方法包装
setTimeout
函数。如果在
timeout
参数中指定的毫秒数内未完成承诺,则
Windows
应用商店应用可以使用
timeout(timeout,
promise)
方法来取消此承诺。
如果在
timeout
参数中指定的时间间隔内未完成套接字操作,则可以调用
timeout(timeout,
promise)
方法并将套接字操作作为
promise
参数以使该操作超时。只要套接字操作仍在挂起,就能将其取消。
WinJS.Promise
对象和
timeout(timeout,
promise)
方法可以与
Windows
运行时应用中的任何异步操作一起使用,包括所有的异步套接字操作。
对于正常的完成操作,可以在
timeout(timeout,
promise)
方法调用之后添加“.then”。
对于所有这三个类来说,使用超时的基本模型是相同的。
以下讨论使用
StreamSocket
上的连接操作作为示例。在使用
DatagramSocket

StreamSocket
对象发送或接收网络数据时,或者在使用
StreamSocketListener
对象侦听传入连接时,可以使用相同的模型来实现超时。
创建一个
StreamSocket。
调用
timeout(timeout,
promise)
方法并将其中一个
StreamSocket.connectAsync
方法作为
promise
参数。
在源代码的末尾添加
then(successFunction,
errorFunction)
方法来处理成功和错误案例。
在出错时,关闭套接字。
在取消
StreamSocket
操作承诺之后,将无法再使用已取消的
StreamSocket。
以下示例将针对
StreamSocket
连接操作实现自定义超时。
JavaScript
var
clientSocket
=
null;
var
timeout
=
10000;
//
10
seconds
function
openClient()
{
var
serverHostName
=
new
Windows.Networking.HostName("www.contoso.com");
var
serviceName
=
"http";
//
displayStatus("Client:
connection
started.");
clientSocket
=
new
Windows.Networking.Sockets.StreamSocket();
//var
promise
=
clientSocket.connectAsync(serverHostName,
serviceName)
WinJS.Promise.timeout(timeout,
clientSocket.connectAsync(serverHostName,
serviceName).then(function
()
{
//
displayStatus("Client:
connection
completed.");
//
Do
your
socket
operations
here.
},
function
(reason)
{
//
There
are
many
reasons
for
this
failure:
the
promise
might
have
//
timed
out,
or
the
server
host
refused
the
connection,
or
there
//
was
an
TCP
issue,
or
several
other
possibilities.
//
displayStatus("Client:
connection
failed.
");
//
displayStatus(reason.message);
clientSocket.close();
clientSocket
=
null;
}
));
}

E. 安卓webview对html5支持怎么样

css3的重要标准都已经兼容
javascript方面es6以上的特性不支持,promise,canvas,audio video api之类的部分高级特性部分版本安卓已经支持
所以一般的webapp问题不大,不过从性能上来说webview的性能还是赶不上react native,毕竟还是以cpu运算为主

F. 如何高效地阅读 jQuery 源码

尝试把jquery拆分为ecma扩展(以及emitter promise和queue),dom兼容性问题(compressed && gziped 小于14k,尝试理解哪些函数我不提供兼容性就不能使用,哪些我可以接受原生写法,同时包括一个自己写的css3选择器) , 链式调用(尝试理解用户需求,理解怎么写方便),动画库(你是不是可以jq和css3兼容呢)

G. JQuery 的 deferred . promise对象

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

原文是:

lection,queuedornot,havefinished.

而这段话是说:

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


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

$('#message')
.animate({width:400,height:240},3000)
.promise()
.done(function(){
console.log('animateend');
});

也可以写成:

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

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

promise.done(function(){
console.log('animateend');
});


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


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


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


后面的 var promise = xxx 就是指返回的 Promise对象,这个对象在收到animate 方法里面的信号(这个信号包括 resolve,reject,notify,resolveWith,rejectWith, andnotifyWith等)可以调用方法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()吧。它的一般用法为:

vardefer=$.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()后面的函数。

H. 零基础学web前端难度多大

我一年多前在中 公学的,作为过来人希望对你有帮助哈,很多想做Web前端开发的人,却不知道该如何学习,并且前端体系比较庞杂,很难从一而终,对于零基础的小白来说,很容易因为找不到正确的学习方向而耽搁了发展和时间,那么零基础小白学Web前端开发工程师,学习路线是什么呢?

互联网日益发展的今天,Web前端开发工程师已成为市场上极具竞争力的人才,但是前端要学习的东西很多,而且很杂,对于很多人来说,学前端问题的关键在于没有找到正确的发展方向,他不知道自己该学什么?前端更是体系庞杂,很难从一而终,那今天我就来跟大家聊聊Web前端学习路线是什么。

Web前端开发入门学习有:HTML、CSS、JavaScript(简称JS)这三个部分。所以在学习之前我们需要先明确三个概念:

HTML——内容层,它的作用是表示一个HTML标签在页面里是个什么角色。

CSS——样式层,它的作用是表示一块内容以什么样的样式(字体、大小、颜色、宽高等)显示。

JS——行为层,它的作用是当用户触发某些行为时,会给内容和样式带来什么样的改变。

首先我们初学者岗开始学习 HTML,CSS先跟基础的视频学习一下,然后跟着案例去练习,案例,案例是非常重要的,应用到实处,这是一个熟能生巧的技能,然后我们做出五个像小米这样的静态官网网站,这样一来,我们的基本功可以说是掌握的很扎实,之后我们需要做各种常规的、奇怪的、大量的布局练习来捆固、理解自己的知识。

下一步的学习 Javascript,开始我们要知道这门语言是做什么的,它能有什么用,以及他的强势是什么。JavaScript被称为前端开发者的核心部分,也是工资的标准,现在有专门的JavaScript工程师,薪资都很高。所以这一部分,有追求的小伙伴可以上点心,学的深入一些。

学习前端需要一步步来,用心学习,掌握一些学习方法,但是自学肯定有局限性,有条件的小伙伴可以来优就业免费试学一下,看看自己适不适合学习前端,来优就业,无论你在哪个城市,都能方便就近入学,参与面授培训。与远程在线教学相比,面授课程能够让学员真切感受班集体的学习氛围,更有老师面对面的讲授,手把手的教学,保时保量。

热点内容
阿里云怎么领服务器 发布:2024-10-09 05:17:53 浏览:816
c语言可逆素数 发布:2024-10-09 05:13:44 浏览:920
班级采访问题 发布:2024-10-09 04:45:44 浏览:497
单人地图脚本 发布:2024-10-09 04:45:32 浏览:754
易语言cf自瞄源码 发布:2024-10-09 04:36:14 浏览:121
安卓和苹果哪个更难修理 发布:2024-10-09 04:36:12 浏览:26
黎明觉醒安卓什么配置 发布:2024-10-09 04:32:05 浏览:127
助手autojs脚本 发布:2024-10-09 04:31:40 浏览:186
sql判断今天 发布:2024-10-09 04:19:35 浏览:943
拆分视频需要哪些配置 发布:2024-10-09 04:06:39 浏览:912