Angular 保证,为什么我在这种情况下得到 'then' 未定义?
Angular Promise, why am I getting 'then' of undefined in this instance?
我的 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;
});
}
但是我在以下行中收到以下错误:
var promise = FormatChartDataFactory.getData(ticker, timeInHours).then(function() {
这是我的 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') {
// ....
Promise 应该 return 直接来自代码,不应该 return 来自它的 .then
回调。简而言之,您还没有 return 从函数中编辑 promise,而您正在那里寻找 .then
方法,这会导致错误。
代码
//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;
我的 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;
});
}
但是我在以下行中收到以下错误:
var promise = FormatChartDataFactory.getData(ticker, timeInHours).then(function() {
这是我的 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') {
// ....
Promise 应该 return 直接来自代码,不应该 return 来自它的 .then
回调。简而言之,您还没有 return 从函数中编辑 promise,而您正在那里寻找 .then
方法,这会导致错误。
代码
//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;