gpt4 book ai didi

javascript - 创建一个没有返回值的 AngularJS promise

转载 作者:数据小太阳 更新时间:2023-10-29 04:32:15 26 4
gpt4 key购买 nike

我正在使用 $q 来围绕遗留回调包装 promise 。但是,现有回调没有要返回的值。它采用不带参数的成功函数。

angular.module('MyModule').service('MyService', function() {
function initialize() {
var deferred = $q.defer();
LegacyFactory.initialize(
// 'void' Success Callback
function () {
deferred.resolve (/* WHAT DO I PUT HERE? */);
},
// Error Callback
function (errorCode) {
deferred.reject(errorCode);
});
return deferred.promise;
}
});

我在 AngularJS 文档中找不到 void 版本的 resolve。我可以返回一个虚拟值,但客户端可能会访问该虚拟值,这会导致混淆。

如何创建没有返回值的 AngularJS promise?

注意:问题 AngularJS promise returning empty object是完全不同的。该问题确实在 resolve 函数中返回了一个值。

最佳答案

JavaScript 中没有void 数据类型。相反,JavaScript 使用原始类型 undefined 来表示尚未赋值的变量。

没有返回值的方法或语句将返回undefined。不使用 return 语句的函数将返回 undefined。未传递给函数的参数将是 undefined

我希望您开始看到 undefined 的一致行为。

function foo(x) { console.log(x); }
foo(); // will print undefined
function zoom() {}
console.log(zoom()); // will print undefined

因此,当您使用 deferred.resolve() 时,您将传递 undefined 作为数据参数的值。

更具体地回答您的问题。

“如何创建没有返回值的 AngularJS promise?”

编写 JavaScript 代码,为 promise 提供无返回值的意图。你会写这个。

deferred.resolve(undefined);

这清楚地表明没有预期的数据。

稍后在您的回调中您不必定义数据参数,但如果您愿意,您可以。

 foo().then(function(data){
if(typeof data === 'undefined') {
// there is no data
} else {
// there is data
});

如果您总是期望没有数据,那么就这样做吧。

foo().then(function(){
// handle success
});

关于javascript - 创建一个没有返回值的 AngularJS promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26070217/

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