亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

我嘗試在 JavaScript 中創建一個 while 循環。我有一個我想在身體上做的例子

我嘗試在 JavaScript 中創建一個 while 循環。我有一個我想在身體上做的例子

蝴蝶刀刀 2023-07-14 16:20:59
const condition = true;while (condition) condition = checkCondition();function checkCondition(){    (async () => {        if (await page.$('condition') !== null){ // condition met            return true;        } else { // condition not met            return false;        }    })();}我不確定我做得是否正確。請有人告訴我正確的方法。
查看完整描述

2 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

prime 的答案將使您更接近并提供一些有用的材料供閱讀。我想我會通過修復幾個問題并添加更多解釋來在此基礎上進行一些改進。


下面是您的代碼的工作演示


(async function() {

  let condition = true;

  while (condition) condition = await checkCondition();

})()


async function checkCondition() {

  console.log('checkCondition was called');

  if (await someAsyncLogic() !== null){ // condition met

    return true;

  } else { // condition not met

    return false;

  }

}


async function someAsyncLogic() {

  return Math.random() > 0.2 ? true : null;

}

您的代碼實際上具有以下內容:


function checkCondition(){

    (async () => {

        // do some logic

        return true/false

    })();

}

這里的問題是,你的 return true/false 只會讓你內心的 IIFE(async () => ...)()提供一個解析為 true/false 的承諾。如果您愿意,您甚至可以將該值存儲在變量中。


function checkCondition(){

    const theResult = (async () => {

        // do some logic

        return true/false

    })();

    console.log(theResult) // <-- [object Promise]

    console.log(await theResult) // <-- true/false

}

但是,正如我們所看到的, checkCondition 本身不返回任何內容。只有里面的內部函數才可以。您必須返回 theResult 才能執行此操作 - 但為了做到這一點,您需要將 checkCondition 聲明為異步函數,此時,不再需要異步 IIFE,這就是該示例將其刪除的原因。


如果 checkCondition 是異步的,那么調用它的代碼必須使用 wait,并且必須位于異步上下文中(如 async IIFE 或普通的異步函數)。


查看完整回答
反對 回復 2023-07-14
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

const condition = true;

while (condition) condition = checkCondition();


async function checkCondition() {

? ?if (await page.$('condition') !== null){ // condition met

? ? ? ? return true;

? ?} else { // condition not met

? ? ? ? return false;

? ?}

}


查看完整回答
反對 回復 2023-07-14
  • 2 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號