import { AsyncFunction } from '../types/asyncFunction.js'; /** * * 封装一个任意支持callback的同步函数为异步函数 * * * * * promiseify(fs.readFile)('package.json', 'utf8').then().catch() * * * // 比如myFunc函数的第二个参数是callback,那么可以这样使用 * function myfunc(a,callback,options){ * } * * promisedFunc(a,options).then().catch() * * * promisedFunc = promiseify(myfunc,{ * buildArgs:(...args:any[],callback)=>{ // 将callback放到最后一个参数 * return [args[0],callback,args[1]] * } * }) * * 如果myFunc函数的callback不是标准nodejs callback样式,签名是这样: (a,b,err,c)=>{} * * 则需要自己实现handleCallback * * promisedFunc = promiseify(myfunc,{ * buildArgs:(...args:any[],callback)=>{ // 将callback放到最后一个参数 * return [args[0],callback,args[1]] * }, * parseCallback:(results:any[])=>{ * return [results[2],results[0],results[1],results[3]] * }) * }) * * * * * * * * */ type BuildArgsFunction = (args: Args, callback: (...results: any[]) => void) => any[]; interface PromiseifyOptions any> { buildArgs?: BuildArgsFunction>; parseCallback?: (results: any[]) => any; } interface IncludeCallbackFunction { } /** * * * @param fn * @param options * @returns */ declare function promisify any = AsyncFunction>(fn: (...args: any) => any, options?: PromiseifyOptions): PromisedFunc; export { type BuildArgsFunction, type IncludeCallbackFunction, type PromiseifyOptions, promisify };