【发布时间】:2025-12-11 03:05:03
【问题描述】:
我正试图将我的头脑围绕在 javascript 承诺上,因为我在我正在从事的项目中需要它们。我尝试了几件事,但从未成功过。
问题来了:
我有一个函数,它通过 websockets 连接到服务器,获取某些信息并将它们作为对象传递。 由于这是异步的,我需要等到此过程完成才能继续处理我得到的信息。
这是获取信息的全局函数:
function getInfos(par1, par2) {
// Open Websocket connection, ask for infos and wait for Answer/Message.
OnMessage: function (aEvent, aToken) {
if (aToken == "JustAString") {
// Does this work this way? I need to get the "aToken" to the "MyCalltoServer" Function that called this mess here
return aToken;
// Tried this to resolve the promise created in the other script.
resolve(MyCallToServer);
}
}
}
这就是我尝试使用现有的 getInfos 函数创建承诺的方式。
var promiseResolve, promiseReject;
var MyCallToServer = new Promise(function(resolve, reject){
promiseResolve = resolve;
promiseReject = reject;
getInfos(par1,par2);
});
MyCallToServer.then(function(){
console.log("done");
console.log(aToken);
})
长话短说 - 它根本不起作用。任何帮助是极大的赞赏。问题是我无法改变 getInfos 函数,因为它已经很复杂了(300 个不同答案的案例)。所以我想也许有办法 包括解决其中的承诺?
非常感谢任何帮助!!!
【问题讨论】:
-
您创建了
promiseResolve和promiseReject,但没有将函数传递给getInfos- 两个函数都没有被调用,resolve在getInfos中未定义。 -
通话会是什么样子? getInfos(par1,par2,promiseResolve) ?
-
你不能让
getInfos返回它自己的承诺吗? -
也许,我不知道 :-) 老实说,我还没有完全理解这个原理。你介意给我举个例子吗?
标签: javascript jquery asynchronous promise