Angular 承诺和$q
我有以下代码。我正在寻找Angular 5中的promise和$q模块,但没有找到任何有用的详细信息。下面的代码是用AngularJS和Javascript编写的 我想把这个代码转换成Angular 5和TypeScript。 这是一个模拟数据的模拟服务:Angular 承诺和$q,angular,Angular,我有以下代码。我正在寻找Angular 5中的promise和$q模块,但没有找到任何有用的详细信息。下面的代码是用AngularJS和Javascript编写的 我想把这个代码转换成Angular 5和TypeScript。 这是一个模拟数据的模拟服务: angular.module('reports.appActivity').factory('AppActiveMockServices', ['$q', function ($q) { var appActivi
angular.module('reports.appActivity').factory('AppActiveMockServices', ['$q',
function ($q) {
var appActivity;
function loadappActivity(params) {
var deferred = $q.defer(),
cancel = function (reason) {
deferred.resolve(reason);
};
injectappActivity(params);
deferred.resolve(appActivity);
return {
promise: deferred.promise,
cancel: cancel
};
}
function injectappActivity(params) {
var total = Math.floor((Math.random() * 100)),
someUsage = total - Math.floor((Math.random() * 80)),
tempValue,
maxIndex = 0,
deltaTime=0,
daysSelected,
timeBegin,
timeEnd,
d = new Date(),
dayInmilliseconds;
appActivity = {total: total, items: []};
deltaTime = 24 * 3600 * 1000; // daily
timeBegin = (params.timestamp_start).getTime();
timeEnd =(params.timestamp_end).getTime();
daysSelected = Math.round((timeEnd - timeBegin) / 3600/24/1000);
if (daysSelected <= 1 ) {
maxIndex = 24 ; // one day , resolution is hourly data
deltaTime = 3600 * 1000; // hourly
dayInmilliseconds = (d.getTime() - (24 * 3600 * 1000));
}
else if (daysSelected <= 7) {
maxIndex = 7; // 7 days , resolution is daily data
dayInmilliseconds = (d.getTime() - (7* 24 * 3600 * 1000));
}
else if (daysSelected <= 30) {
maxIndex = 30; // 30 days , resolution is daily data
dayInmilliseconds = (d.getTime() - (30* 24 * 3600 * 1000));
}
else { // custom range
maxIndex = daysSelected; // x days , resolution is daily data
dayInmilliseconds = (d.getTime() - (daysSelected * 24 * 3600 * 1000));
}
for (var index = 0; index < maxIndex; index++) {
d.setTime(dayInmilliseconds + (index * deltaTime));
total = Math.floor((Math.random() * 100));
tempValue = Math.floor((Math.random() * 50));
someUsage = (tempValue > total) ? total : (total - tempValue);
var item = {
'total': total,
'some_usage': someUsage,
'date': d.toISOString().slice(0, 19) + 'Z'
};
appActivity.items.push(item);
}
}
return {
loadappActivity: loadappActivity
};
}
]);
非常感谢您的帮助
看。。。对于Angular 5中的promise和$q,但未找到有用的详细信息
在Angular中,假设您不使用polyfills.ts,您应该能够像下面的示例中那样使用Promise
想。。。使用Angular 5和Typescript将此代码传输到
这是让你开始的基本设置,我不打算复制所有代码,因为我看到其中有一些遗漏/奇怪的地方,可能对修复有更大的影响,比如你有一个从未使用过的params arg,还有一个从未定义过的函数injectappActivity
考虑使用angular cli生成服务
ng generate service app-active-mock
然后像这样更新它
app-active-mock.service.ts
@注射的
导出类AppActiveMockService{
公共活动:承诺{
回报承诺。决心。。。
}
}
也有点不相关,但您可能不会找到任何有用的搜索与Angular中的承诺相关的内容,因为在大多数情况下,社区都接受了Observable谢谢您对我问题的回答。实际上,这是模拟数据的服务。用丢失的代码更新了代码function@Kim2018我认为这很好地回答了你的问题。您还需要什么其他信息?该问题在当前状态下无法获得高质量的答案。目前还不清楚这项服务应该如何使用,您对答案的期望以及您对Angular的专业水平。根据经验,可观测值应该用于角度测量。它们比承诺更具普遍性,而且它们是可以取消的——而承诺不是。因此,服务应该被重写为可观察的对象——其他使用它的单位也应该如此。