gpt4 book ai didi

javascript - 当 SignalR 函数完成时,如何将 SignalR 函数的值返回给父函数?

转载 作者:行者123 更新时间:2023-11-29 21:06:11 24 4
gpt4 key购买 nike

我有一个 SignalR 函数,可以从集线器检索一些数据。

例子:

var getApple = function () {
hub.server.getFruits("Apple").done(function (result) {
return result;
});
};

getFruits() 完成时,我希望能够将 getFruits() 的值返回给 getApple()

console.log(getApple());

但是使用这种方法,getApple() 将始终未定义。

我尝试了以下(非常难看)的解决方案

var getApple = function () {
var result2;
hub.server.getFruits("Apple").done(function (result) {
result2 = result;
});
return result2;
};

但是 getApple()getFruits() 完成之前是未定义的。我能够使用 setTimeout() 解决此问题,但这显然是一个糟糕的解决方案。

我也尝试了以下方法,但这似乎没有返回 getFruits() 的实际结果。

var getApple = function () {
return hub.server.getFruits("Apple").done(function (result) {
return result;
});
};

据我所知,我缺乏异步 javascript/jquery promise(?) 知识。我已阅读文档并查看了其他一些 SO 问题,但无法将其正确置于上下文中。

我将不胜感激为此正确实现的代码示例。

最佳答案

像这样的东西会起作用 - 基本上你需要在函数中创建一个 promise 对象,如下所示:

    var callTestMethod = function() {
var promise = new Promise(function(resolve, reject) {
var result = myHub.server.testMethod();
resolve(result);
});

return promise;
}

这就是您调用它并等待结果的方式:

    $.when(callTestMethod()).done(function(result) {
alert(result);
})

关于javascript - 当 SignalR 函数完成时,如何将 SignalR 函数的值返回给父函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com