You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:35:19