欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

javascript如何阻塞程序運(yùn)行

背景:

在鐵西等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,鐵西網(wǎng)站建設(shè)費(fèi)用合理。

JavaScript 是單線程的,一段 Js 程序的運(yùn)行會(huì)占滿整個(gè)程序進(jìn)程,我們通常會(huì)想方設(shè)法的通過異步編程來減少程序的阻塞,但在某些特殊的場(chǎng)景下我們需要阻塞程序的運(yùn)行,那么今天就反其道而行之,看看通過怎么樣正常的方式來阻塞 Js 運(yùn)行。

方法一 :

無限循環(huán)

  • 單線程的 JavaScript 可以給我們靈感,只要程序不斷的計(jì)算就可以阻塞程序的進(jìn)程:

function sleep(d){  
    let t = Date.now();
    while(Date.now() - t <= d);  
}

function test() {
    console.log('sleep');
    sleep(10000);
    console.log('run');
}

test();
  • 但是這種方式其實(shí)是通過無限占用計(jì)算機(jī)的資源來造成假死狀態(tài),它會(huì)消耗大量的 CPU,并沒有真正的讓程序進(jìn)程停止,這種方式不可取。

方法二 : 

setTimeout

  • 我們直接用 setTimeout 回調(diào)的方式來阻斷程序的進(jìn)程,當(dāng)然它的確是沒有讓程序繼續(xù)進(jìn)行并且讓 CPU 空閑下來,但是這種寫法并不是一種同步編程的方式:

function test() {
    console.log('sleep');
    setTimeout(function() {
        console.log('run');
    }, 10000)
}

await
  • ES 的高級(jí)版本出現(xiàn)了 Promise、await 等異步編程,它們讓程序的寫法更佳的優(yōu)雅簡(jiǎn)介,同樣也要借助于 setTimeout 來解決,建議采用此方式:

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function test() {
    console.log('sleep');
    await sleep(10000);
    console.log('run');
}

test();

方法三 : 

generator & yield

  • ES6 的迭代器同樣也具備異步編程能力,但是這種寫法相當(dāng)晦澀難懂,建議少用:

function sleep(time) {
    setTimeout(function () {
        test.next();
    }, time);
}

function* gen() {
    console.log('sleep');
    yield sleep(10000);
    console.log('10 second later');
}

let test = gen();
test.next();

總結(jié)

上述方法總結(jié)下來就是兩種,一種是強(qiáng)行阻斷式利用 Js 的單線程機(jī)制;另一種就是借助 Js 的異步事件機(jī)制+高級(jí)異步編程語法。當(dāng)然我們?cè)趯?shí)際業(yè)務(wù)情況中使用阻塞 JS 進(jìn)程的地方非常少,經(jīng)常會(huì)通過 UI 來禁止用戶繼續(xù)操作,這樣的探索僅僅是搞清楚一些 Js 的基本原理,有助于我們很好的了解它。

以上就是javascript阻塞問題的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!

文章題目:javascript如何阻塞程序運(yùn)行
轉(zhuǎn)載來于:http://chinadenli.net/article2/ppcgic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)品牌網(wǎng)站制作電子商務(wù)定制網(wǎng)站Google網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司