跳至主要內容

lang - 语言

约 479 字大约 2 分钟道无涯

lang提供语言相关的API,比如delay(延时)。

目录

接口

函数

函数

delay

delay(timeout): Promise<void>

返回一个Promise,将在timeout时间后resolve。例如await delay(1000)会在1秒后执行。不同于Pro 8的sleep(),此函数并不会真正阻塞线程/事件循环。

示例

"nodejs";
const { delay } = require('lang');
async function main() {
  console.log(1);
  await delay(2000);
  console.log(2);
}
main();

参数

名称类型描述
timeoutnumber超时时间,若小于或等于0,则此函数返回一个立即resolve的Promise。

返回值

Promise<void>


lazy

lazy(target, name, __namedParameters?): any

TypeScript装饰器,在JavaScript中无法使用。

用于装饰类的getter属性,装饰后的属性在第一个调用时会被自动执行并保存值,以后调用时会使用之前保存的值。

示例

import { lazy } from 'lang'

class Sum {
   private n: number;

   constructor(n: number) {
     this.n = n;
   }

   @lazy
   get sum() {
     console.log('calculating sum...');
     let result = 0;
     for (let i = 0; i < this.n; i++) {
          result += i;
     }
     return result;
   }
}

const sum = new Sum(10);
console.log(sum.sum); // calculating sum...55
console.log(sum.sum); // 55

参数

名称类型
targetany
namestring
__namedParametersPropertyDescriptor

返回值

any


lazyProp

lazyProp<T>(evaluator): ReadOnlyProperty<T>

类型参数

名称
T

参数

名称类型
evaluator() => T

返回值

ReadOnlyProperty<T>


promise

promise<T>(executor): Promise<T>

创建一个Promise,与new Promise类似,唯一不同的是在此Promise状态在pending状态时(也即resolve/reject之前),autojs会保持引擎不退出。

由于nodejs并不感知Java的一些异步API的执行,此函数通常用于创建和Java API相关的Promise,在Java API返回之前保持程序运行。

示例

"nodejs";
const { promise } = require('lang');
const { android } = require('android');

function loadAudioAsync(file) {
  const SoundPool = android.media.SoundPool;
  return promise(function (resolve) {
     const soundPool = new SoundPool(1, SoundPool.STREAM_MUSIC, 0);
     soundPool.setOnLoadCompleteListener($autojs.java.wrap(() => resolve(soundPool)));
     soundPool.load(file, 1);
  });
}

类型参数

名称
T

参数

名称类型
executor(resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void

返回值

Promise<T>