gpt4 book ai didi

javascript - 从 .then() 函数执行名为 `fat arrow`

转载 作者:搜寻专家 更新时间:2023-10-30 21:24:52 24 4
gpt4 key购买 nike

Success 在 then 回调中的成功工厂响应中被调用:

这不起作用,它找不到response:

this.storeFactory.getSafes().then(success(response), failure());

如何正确地将响应传递给 success 函数?

var success = (response: any): void => {
scope.safes = response.data.safes;
localStorage.setItem('safeCount', scope.safes.length);
this.$http.get('/app/dashboard/safes/safes.html', { cache: this.$templateCache }).success((tplContent): void => {
element.replaceWith(this.$compile(tplContent)(scope));
});
}

长手版还好,但我觉得很乱。

this.storeFactory.getSafes().then((response: any): void => {
scope.safes = response.data.safes;
localStorage.setItem('safeCount', scope.safes.length);
this.$http.get('/app/dashboard/safes/safes.html', { cache: this.$templateCache }).success((tplContent): void => {
element.replaceWith(this.$compile(tplContent)(scope));
});
}

最佳答案

How to I pass the response to the success function correctly?

不知道。您将 success 函数传递给 then 方法,然后 promise 会将结果值传递给您的 success 函数.这就是回调的工作原理。

您需要做的就是将response 声明为函数的参数。 不得自己调用该函数 - 您只应将其作为回调传递:

this.storeFactory.getSafes().then(success, failure);

此外,在将函数传递给 then 之前,您还需要定义这些函数。如果您只声明它们,并将 undefined 值传递给 then,它们将被忽略。使用

var success = (response: any): void => {
scope.safes = response.data.safes;
localStorage.setItem('safeCount', scope.safes.length);
this.$http.get('/app/dashboard/safes/safes.html', { cache: this.$templateCache }).success((tplContent): void => {
element.replaceWith(this.$compile(tplContent)(scope));
});
};

var failure = (): void => {
this.$http.get('/app/shared/mocks/tableError.html', { cache: this.$templateCache }).success((tplContent): void => {
element.replaceWith(this.$compile(tplContent)(scope));
});
}

this.storeFactory.getSafes().then(success, failure);

然而,箭头函数实际上应该是内联定义的,而不是将它们分配给特定的变量。 (您在问题中称其为“长手版”,即使它实际上更短)。只需使用它,您就不会遇到这些问题。

一般来说,我会建议完全避免在变量赋值中定义函数。如果你需要一个变量,只需 use a declaration instead (Typescript 语法应该变化不大)。

关于javascript - 从 .then() 函数执行名为 `fat arrow`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34184822/

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