Javascript 如何修复此函数的承诺返回?
我有一个Javascript 如何修复此函数的承诺返回?,javascript,angularjs,promise,angularjs-service,Javascript,Angularjs,Promise,Angularjs Service,我有一个标签数组,最多可以包含3项 接下来,我将tags传递到我的getTagQuotes函数中,并尝试为其设置一个promise变量现在我得到的承诺还没有定义。 此函数没有返回语句 function getTagQuotes(tags) 您的getTagQuotes函数应该返回一个带有$q服务的承诺 应该是这样的: function getTagQuotes(tags) { var deferred = $q.defer(); (...) // When the
标签数组
,最多可以包含3项
接下来,我将tags
传递到我的getTagQuotes
函数中,并尝试为其设置一个promise变量现在我得到的承诺还没有定义。
此函数没有返回语句
function getTagQuotes(tags)
您的
getTagQuotes
函数应该返回一个带有$q
服务的承诺
应该是这样的:
function getTagQuotes(tags) {
var deferred = $q.defer();
(...)
// When the action is finished here, call resolve:
deferred.resolve();
(...)
// And in the end, return the promise
return deferred.promise;
}
最后,在主代码中,您将执行以下操作:
var promise = getTagQuotes(tags).then(function(){
console.log('promise =',promise);
// Fill chartObj with tweet data arrays
(...)
});
你完全没有抓住承诺的重点!在
getTagQuotes
函数中,您不会返回任何承诺。因此,当您检查它时,它是未定义的。例如,最好阅读一些关于“承诺”的文档。@jamiec promissions告诉函数在沿着链继续之前等待返回某些内容,或者只是继续正确的操作?不,一点也不。不需要等待。Promission提供了一种方法来提供回调,该回调应在异步操作完成时进行操作。。promise是一个属性,而不是一个函数-应该没有括号。我正在获取类型错误:无法读取var promise=getTagQuotes(标记)
行上未定义的属性“then”。。将在bitAh中发布要点!我忘了返回return gettweetVolume.returnTweetVol
您不能返回它。如果您这样做,for循环将毫无价值,您将始终返回第一个调用。@FernandoPinheiro谢谢!是的,我刚发现那个问题。。。尝试找出如何在使用for循环时返回承诺。我发现promise.all
虽然没有按预期工作,但很快就会发布新问题。
function getTagQuotes(tags) {
var deferred = $q.defer();
(...)
// When the action is finished here, call resolve:
deferred.resolve();
(...)
// And in the end, return the promise
return deferred.promise;
}
var promise = getTagQuotes(tags).then(function(){
console.log('promise =',promise);
// Fill chartObj with tweet data arrays
(...)
});