#author("2024-05-28T17:11:40+09:00","","")
#author("2024-10-25T18:42:18+09:00","default:liaodongcheng","liaodongcheng")
*[[javascript]] [#la6753b1]

二.同步异步
1.sync+await+promise的任务链实现
/**
 * 第一个任务
 */
 function task1 () {
  return new Promise(resolve => {
    setTimeout(() => {
      console.log('1', '我是第一个任务,必须第一个执行');
      resolve('done');
    }, 3000);
  });
}

/**
 * 第二个任务
 */
function task2 () {

  return new Promise(resolve => {
    setTimeout(() => {
      console.log('2', '第二个任务');
      resolve('done');
    }, 1000)
  });
}

/**
 * 第三个任务
 */
function task3 () {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('3', '第三个任务');
      reject('error');
    }, 1000);
  });
}

/**
 * 第四个任务
 */
function task4 () {
  return new Promise(resolve => {
    setTimeout(() => {
      console.log('4', '第四个任务');
      resolve('done');
    }, 2000);
  })
}

/**
 * 所有任务
 */
async function allTasks () {
  await task1();
  await task2();
  await task3();
  await task4();
}

// 执行任务
allTasks();

/**
 * 3秒后
 * 1 我是第一个任务,必须第一个执行
 * 1秒后
 * 2 第二个任务
 * 1秒后
 * 3 第三个任务
 * Uncaught (in promise) error
 */
如果要结合setInterval,可以这样写
var key = 0
function task1 () {
  return new Promise(resolve => {
    var intervalId=setInterval(
    function () {
      key = key+1
      if (key>50) {
        console.log('1', '我是第一个任务,必须第一个执行');
        resolve('done');
        clearInterval(intervalId);
      }
    },100);
  });
}
2.循环异步的实现
operateOrderList = [1,2,3,4,5]
    async function f() {
      for (let i = 0; i < operateOrderList.length; i++) {
        await new Promise(function (resolve ) {
          setTimeout(function name() {
            orderImp(operateOrderList[i] , i);
            resolve();
          }
          ,10000)
          
        } )
        // await orderImp(operateOrderList[i] , i);
      }
    }
    f();
    //试试用async/await来进行异步操作循环
    async function orderImp(orderInfo , operateIndex ) {
      document.write(2);
    }
3.同步实现request查询
//查询字典
async function readDictionary(gameLevel) {
    // 定义要请求的URL
    const baseUrl = 'php/database.php';

    // 准备参数
    const params = {
        gameLevel: gameLevel
    };

    // 将参数转换为查询字符串
    const queryString = Object.keys(params).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join('&');
    console.log(queryString);
    // 使用 fetch API 发送请求
    await fetch(`${baseUrl}?${queryString}`)
    .then(response => response.json())
    .then((data) => {words = data })
    .catch(error => {
        console.error('发生错误:', error);
    });
}
4.运算

5.string函数

6.数组

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS