您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

05 js訂閱者模式和觀察者模式代碼(Javascript如何實現接口?)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-15 15:40:20【】3人已围观

简介,用在這里再適合不過。對于第二個問題,我們便是采用偉大的generator生成器函數,其中的yield特性,可以使我們手動的控制代碼的向下執行。接下來我們實際的解決一個問題:實現對于讀取文件異步操作的

,用在這里再適合不過。

對于第二個問題,我們便是采用偉大的generator生成器函數,其中的yield特性,可以使我們手動的控制代碼的向下執行。

接下來我們實際的解決一個問題:實現對于讀取文件異步操作的控制,當讀取完文件之后打印讀取的內容。

我們依賴于node環境,首先通過promise對其進行封裝,實現數據成功的監聽。我們手下代碼如下:

請點擊輸入圖片描述

var fs = require('fs');var readFile = function(fileName) {    return new Promise(function(resolve,reject) {

       fs.readFile(fileName, function(err, data) {            if (err) return reject(err);

           resolve(data);

       })

   })

}

請點擊輸入圖片描述

有了這個東西,我們便可以通過其then()表達式,"當數據加載完后,執行某個動作"。那我們執行的動作是啥,自然就是執行下一步的代碼的操作。繼續看代碼:

請點擊輸入圖片描述

var gen = function* () {    var f1 = yield readFile('/Users/dongqiang/Desktop/demo.txt');    var f2 = yield readFile('/Users/dongqiang/Desktop/demo.txt');

   買粉絲nsole.log('<<<<<<<<<<<<<<<<<<<<<<<',f1.toString());

   買粉絲nsole.log('>>>>>>>>>>>>>>>>>>>>>>>>',f2.toString());

}

請點擊輸入圖片描述

這個就是一個generator函數的表達式,在這個函數里面,遇到generator就會執行類似于return的操作。我們通過next()便可以實現手動的控制代碼的向下執行。

那么我們如何控制代碼的執行流程呢,看下面一段:

請點擊輸入圖片描述

var g = gen();

g.next().value.then(function(data){

 g.next(data).value.then(function(data){

   g.next(data);

 });

});

請點擊輸入圖片描述

這段的具體解釋就是,我們通過promise封裝的對象實現了對于異步操作數據返回的監聽,當數據返回的時候,我們就通過next()執行下一步的操作,同時把上步操作的值帶入到下一個階段的執行流程之中。

但是上面這段操作很是蛋疼啊,我們要的是一個能通用的操作流程函數。那么我們繼續對這段循環操作進行封裝:

請點擊輸入圖片描述

function run(gen){  var g = gen();  function next(data){    var result = g.next(data);    if (result.done) return result.value;

   result.value.then(function(data){

     next(data);

   });

 }

 next();

}

run(gen);

請點擊輸入圖片描述

于是一個非常簡單的買粉絲模塊便誕生了。

最終代碼如下:

請點擊輸入圖片描述

我們把函數放到run的執行器里面,便實現了同步操作異步代碼的過程

很赞哦!(649)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:四川凉山甘洛县

工作室:小组

Email:[email protected]