比如 写了一个抓取页面解析链接的代码
async function getLinksByRequest(url){
return new Promise(function(resolve, reject){
request.get(url , function(error,response,body){
if(error){
reject(error);
}else{
var links=getLinks(body);
resolve(links);
}
});
});
}
现在需要在其他地方 通过 简单的 fn="getLinksByRequest"; fn(someurl) 这样来动态调用 因为解析不同页面是通过不同函数实现的
不管是
async function fn1(url){
var links = await getLinksByRequest(url);
console.log('await',links);
return links;
}
还是
function fn2(url){
var result;
getLinksByRequest(url).then( (links) =>{
console.log('then',links);
result=links;
});
return result;
}
最后调用
fn='fn1';
//fn='fn2';
fn(url);
在函数内部都能得到数据,函数外部返回结果都是 Promise 要取得最终数据 只能复制粘贴大段 await func(param)/promise.then 代码 如果封装好的promise 如果要在其他调用 就象 ret=func(para) 这样的简单的常规方式调用谁怎么实现