Javascript 我发誓,为什么我会得到';然后';在这个例子中是未定义的吗?

Javascript 我发誓,为什么我会得到';然后';在这个例子中是未定义的吗?,javascript,angularjs,asynchronous,promise,angular-promise,Javascript,Angularjs,Asynchronous,Promise,Angular Promise,我的chartDirective中有一个函数,它调用服务中的函数以获取数据,格式化该数据,然后从我的chartDirective中调用另一个函数: function chartTicker(ticker, disabled) { disabled = disabled || false; var defer = $q.defer(); // Clear out previous chart: d3.selectAll("svg > *").remove()

我的chartDirective中有一个函数,它调用服务中的函数以获取数据,格式化该数据,然后从我的chartDirective中调用另一个函数:

function chartTicker(ticker, disabled) {
    disabled = disabled || false;
    var defer = $q.defer();

    // Clear out previous chart:
    d3.selectAll("svg > *").remove();
    document.getElementById('chart').innerHTML = "";
    chart     = {},
    chartData = [];

    // Get and format data for chart:
    document.getElementById('chart').innerHTML = "<svg></svg>";
    var timeInHours = TimeSpanFactory.getTimeHours();

    var promise = FormatChartDataFactory.getData(ticker, timeInHours).then(function() {
        defer.resolve();
        return defer.promise;
    });
}

这是我的
FormatChartDataFactory.getData
函数:

function getData(ticker, limit) {
    var defer = $q.defer();
    chartObj.chartData = [{}];
    var limit_range = '';

    if (limit > 0) {
        limit_range = '?limit=' + limit;
    }

    getTickerPrice(ticker, limit_range).then(function() {
        defer.resolve();
        return defer.promise;
    });

    // GET Ticker data and return chartObj into drawChart:
    ////////////////////////////////////////////////////////////////////
    function getTickerPrice(ticker, limit_range) {
        return ApiFactory.getTickerQuotes(ticker.ticker, limit_range)
            .success(function(data, status, headers, config) {
                if (data.status === 'Success') {
                // ....

下面是。

承诺应该直接从代码返回,而不应该从
返回。然后是它的回调。简而言之,您还没有从函数返回承诺,您正在查找
。然后,
方法出现错误

代码

//1st place
var promise = FormatChartDataFactory.getData(ticker, timeInHours).then(function() {
    defer.resolve();
});
return defer.promise;

//2nd place
getTickerPrice(ticker, limit_range).then(function() {
    defer.resolve();
});
return defer.promise;

哈哈,就是这样!这是历史上最快的回答:)@LeonGaban很高兴能帮助你..谢谢:)
//1st place
var promise = FormatChartDataFactory.getData(ticker, timeInHours).then(function() {
    defer.resolve();
});
return defer.promise;

//2nd place
getTickerPrice(ticker, limit_range).then(function() {
    defer.resolve();
});
return defer.promise;