如何在JavaScript中通过多参数回调实现跨文件函数的顺序返回
解决方案
场景说明
假设现有两个文件:
first.js 文件
function get(p1,p2){ var fruits = [p1,p2] if(fruits.includes('banana')){ return true }else{ return false } }
second.js 文件
function getfruit(){ const val = get("banana","mango") return val }
需求是确保先执行first.js中的get函数并获取返回值,再让second.js的getfruit函数返回该值,且get函数参数不得少于2个。
同步场景(当前代码已满足)
当前代码本身是同步执行的,getfruit调用get时会等待get执行完毕返回结果后才继续执行,直接运行就能得到预期结果。但如果get函数包含异步操作(比如API请求、定时器),则需要调整代码来保证执行顺序。
异步场景解决方案
方案一:使用 Promise + async/await
修改first.js,让get返回Promise以支持异步操作:
function get(p1, p2) { // 模拟异步操作(如定时器、接口请求) return new Promise((resolve) => { setTimeout(() => { const fruits = [p1, p2]; resolve(fruits.includes('banana')); }, 1000); // 模拟1秒异步延迟 }); }
修改second.js,用async/await等待get的异步结果:
async function getfruit() { const val = await get("banana", "mango"); return val; } // 调用示例 getfruit().then(result => console.log(result)); // 输出 true
方案二:使用回调函数
修改first.js,新增回调参数处理异步结果:
function get(p1, p2, callback) { // 模拟异步操作 setTimeout(() => { const fruits = [p1, p2]; const result = fruits.includes('banana'); callback(result); }, 1000); }
修改second.js,通过回调获取get的执行结果:
function getfruit(callback) { get("banana", "mango", (val) => { callback(val); }); } // 调用示例 getfruit(result => console.log(result)); // 输出 true
两种方案都能确保get的异步操作完成后,getfruit才会返回结果,同时get函数始终保持至少2个参数。
内容的提问来源于stack exchange,提问作者Satyam Agrawal
相关产品推荐
相关产品推荐

