gpt4 book ai didi

AngularJS : Injecting a promise into a controller using "resolve"

转载 作者:行者123 更新时间:2023-12-03 06:52:36 24 4
gpt4 key购买 nike

我正在尝试实例化一个 Controller ,使用“解析”对象传递参数。语法如下:

{
controller: 'HtmlModalController',
resolve: {
myarg: function() {
return "FOO";
}
}
}

这将导致我的 Controller 将“myarg”变量作为参数注入(inject),值为“FOO”。

现在,该语法还支持 Promise,在实例化 Controller 时会自动解析。

  resolve: {
myarg: function() {
// Does the same as above (auto-resolved promise)
return $q.when("FOO");
}
}

现在,问题是:如何将 promise 注入(inject) Controller ?我不希望 promise 得到解决,因为一旦加载 Controller 我就会解决它。我尝试嵌套多个 Promise,但一旦进入 Controller ,它们就会全部解析回“FOO”值。

  resolve: {
myarg: function() {
// All promises are resolved for me :'(
return $q.when($q.when("FOO"));
}
}

我现在唯一的解决方案是将 promise 包装到函数/对象中:

  resolve: {
myarg: function() {
// So in my controller I can do "myarg.promise.then(...)"
return {promise: $q.when("FOO")};
}
}

我知道这是一个非阻塞细节,但我想知道是否有一种方法可以“作为 promise ”正确解决 promise 。

谢谢=)

最佳答案

如果不隐式递归地将 promise 解包到最终值,就无法解决它。用 Promise 解决总是用 Promise 的结果来解决,而不是用 Promise 本身来解决。

唯一的选择是传递一个包装器,就像使用 {p:promise } 所做的那样,并且不使用 then 方法。

关于AngularJS : Injecting a promise into a controller using "resolve",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31945885/

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