Javascript 将值传递给回调函数

Javascript 将值传递给回调函数,javascript,web-worker,Javascript,Web Worker,我知道有几个问题,针对这个主题。但我还没有找到解决问题的办法 我的项目中有一个webworker,它应该管理所有ajax调用。由于这种架构,我无法将回调函数传递给ajax函数。我的变通方法是一个代币,应该放在工人的答案中,这样前端可以决定做什么 因此,我在工作人员内部的呼叫如下所示: ajax({ success_func : function(data) { self.postMessage({ task : cb, da

我知道有几个问题,针对这个主题。但我还没有找到解决问题的办法

我的项目中有一个webworker,它应该管理所有ajax调用。由于这种架构,我无法将回调函数传递给ajax函数。我的变通方法是一个代币,应该放在工人的答案中,这样前端可以决定做什么

因此,我在工作人员内部的呼叫如下所示:

ajax({
    success_func : function(data) {
        self.postMessage({
            task : cb,
            data : data
        }
    }
});
我测试过的最可怕的事情是

ajax({
    success_func : (function(cb) {
        return function(data) {
            self.postMessage({
                task : this.cb,
                data : data
            });
        }.bind({cb : cb});
    })(cb),
});
但是,在执行第一个ajax调用之前,只要我调用worker,就会得到两个数据不同但cb相同的答案


如何强制函数使用相应调用中的cb,而不是传递给worker的最后一个调用?

webworker在我的项目中,它应该管理所有ajax调用。你为什么要这样做?这似乎是一个非常有问题的设计。这听起来像是一个问题,我认为让工作人员处理一些(同步的)后台任务会阻止主脚本是个好主意。但是AJAX不是同步的吗?A表示异步、异步JavaScript和XML。听起来好像你只是想忘记web工作。你不能将函数传递给web工作人员。@Liam我在两个请求中以同步模式使用XMLHttpRequest。