當前位置:首頁 » 操作系統 » 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 07:11:31 瀏覽:304
花雨庭伺服器如何全屏 發布:2024-10-09 06:39:28 瀏覽:213
密碼查看器怎麼使用 發布:2024-10-09 06:38:55 瀏覽:495
sqlrownum 發布:2024-10-09 06:28:53 瀏覽:383
F模塊驅動器編譯錯誤 發布:2024-10-09 06:06:21 瀏覽:636
腳本亞索集錦 發布:2024-10-09 05:53:30 瀏覽:877
安卓手機格式化後為什麼打不開 發布:2024-10-09 05:52:58 瀏覽:511
雲伺服器可以超級計算機嗎 發布:2024-10-09 05:51:33 瀏覽:17
php基本語法手冊 發布:2024-10-09 05:34:04 瀏覽:819
shell腳本累加 發布:2024-10-09 05:33:41 瀏覽:843