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
    (...)
});