第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的函數(shù)調(diào)用應(yīng)該由setTimeout立即執(zhí)行?

為什么我的函數(shù)調(diào)用應(yīng)該由setTimeout立即執(zhí)行?

大話西游666 2019-07-02 14:29:27
為什么我的函數(shù)調(diào)用應(yīng)該由setTimeout立即執(zhí)行?這是我的問題。我有這個功能來測試代理服務(wù)器。function crawl() {     var oldstatus = document.getElementById('status').innerHTML;     document.getElementById('status').innerHTML = oldstatus + "Crawler Started...<br />";     var url = document.getElementById('url').value;     var proxys = document.getElementById('proxys').value.replace(/\n/g,',');     var proxys = proxys.split(",");     for (proxy in proxys) {         var proxytimeout = proxy*10000;         setTimeout(doRequest(url,proxys[proxy]), proxytimeout);     }}我希望‘doRequest()’函數(shù)在大約10秒的時間內(nèi)被調(diào)用,但是即使使用setTimeout(),函數(shù)也會被立即調(diào)用。任何想法都?xì)g迎,謝謝。PS:即使我為‘proxytimout’設(shè)置了任意的值,它也沒有效果。
查看完整描述

3 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

當(dāng)您以這種形式將函數(shù)交給setTimeout時,函數(shù)將被執(zhí)行,而不是傳遞給setTimeout。你有三個選擇可以讓它發(fā)揮作用:

首先給出函數(shù),然后給出超時和參數(shù)作為最后一個參數(shù):

setTimeout(doRequest, proxytimeout, url, proxys[proxy]);

或者只編寫一個將被評估的字符串:

setTimeout('doRequest('+url+','+proxys[proxy]+')', proxytimeout);

第三種方式是傳遞一個匿名函數(shù),該函數(shù)調(diào)用該函數(shù)。請注意,在本例中,您必須在閉包中執(zhí)行此操作,以防止在循環(huán)中更改值,因此會遇到一些棘手的問題:

(function(u, p, t) {
    setTimeout(function() { doRequest(u, p); }, t);})(url, proxys[proxy], proxytimeout);

第二種格式有點麻煩,但如果參數(shù)是標(biāo)量值(字符串、INT等),則仍然有效。第三種格式有點不清楚,因此在這種情況下,第一種選擇顯然最適合您。


查看完整回答
反對 回復(fù) 2019-07-02
?
慕神8447489

TA貢獻1780條經(jīng)驗 獲得超1個贊

這里的問題是:

setTimeout(doRequest(url,proxys[proxy]), proxytimeout);

寫字doRequest()實際上是調(diào)用這個函數(shù)。您希望傳遞函數(shù)本身:

setTimeout(doRequest, proxytime, url, proxys[proxy]);


查看完整回答
反對 回復(fù) 2019-07-02
?
千萬里不及你

TA貢獻1784條經(jīng)驗 獲得超9個贊

你誤會了setTimeout功能。

這個setTimeout函數(shù)接受一個函數(shù),并在以后執(zhí)行它。
通過寫作setTimeout(doRequest(url,proxys[proxy]), proxytimeout),你打電話給doRequest函數(shù),并將結(jié)果(假設(shè)它返回另一個函數(shù))傳遞給setTimeout.

你得通過doRequest參數(shù)setTimeout,就像這樣:

setTimeout(doRequest, proxytimeout, url, proxys[proxy]);

這會過去的setTimeout這個doRequest函數(shù)本身(不首先調(diào)用它),并將參數(shù)傳遞給它。doRequest當(dāng)它終于召喚它的時候。


查看完整回答
反對 回復(fù) 2019-07-02
  • 3 回答
  • 0 關(guān)注
  • 630 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號