Ionic 2/TypeScript承诺动态函数列表
我是typescript和Ionic 2的新手,我正在尝试创建一个干净的代码,以获取多个图像并转换为base64,因此我需要使用“承诺”,我的最终目标是获得base64图像的列表并将其发送到我的服务器。由于我正在使用繁重的代码,我想让它变得非常干净,这是可行的,我想知道每个人的意见,谢谢。获取图片的函数是getImgs() 但是我保证。所有人都没有打过电话。Ionic 2/TypeScript承诺动态函数列表,typescript,ionic-framework,promise,ionic2,Typescript,Ionic Framework,Promise,Ionic2,我是typescript和Ionic 2的新手,我正在尝试创建一个干净的代码,以获取多个图像并转换为base64,因此我需要使用“承诺”,我的最终目标是获得base64图像的列表并将其发送到我的服务器。由于我正在使用繁重的代码,我想让它变得非常干净,这是可行的,我想知道每个人的意见,谢谢。获取图片的函数是getImgs() 但是我保证。所有人都没有打过电话。 import { Component } from '@angular/core'; import { NavController, Na
import { Component } from '@angular/core';
import { NavController, NavParams, ModalController } from 'ionic-angular';
import { ImagePicker } from 'ionic-native';
@Component({
selector: 'page-cadastrar-post',
templateUrl: 'cadastrar-post.html'
})
export class CadastrarPostPage {
imgs: Array<any> =[];
constructor(public navCtrl: NavController, public navParams: NavParams, public modalCtrl: ModalController) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad CadastrarPostPage');
}
convertFileToDataURLviaFileReader(url) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var reader = new FileReader();
reader.onloadend = function () {
resolve(reader.result);
// callback(reader.result);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
});
}
getImgs() {
var options = {
maximumImagesCount: 5,
quality: 80
};
ImagePicker.getPictures(options).then((results) => {
for (var i = 0; i < results.length; i++) {
this.imgs.push(this.convertFileToDataURLviaFileReader(results[i]));
}
}, (err) => { });
Promise.all(this.imgs).then((results: any[]) => {
alert(results[0]);
//finally
});
}
}
我想不出我错过了什么,一切似乎都很好。
import { Component } from '@angular/core';
import { NavController, NavParams, ModalController } from 'ionic-angular';
import { ImagePicker } from 'ionic-native';
@Component({
selector: 'page-cadastrar-post',
templateUrl: 'cadastrar-post.html'
})
export class CadastrarPostPage {
imgs: Array<any> =[];
constructor(public navCtrl: NavController, public navParams: NavParams, public modalCtrl: ModalController) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad CadastrarPostPage');
}
convertFileToDataURLviaFileReader(url) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var reader = new FileReader();
reader.onloadend = function () {
resolve(reader.result);
// callback(reader.result);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
});
}
getImgs() {
var options = {
maximumImagesCount: 5,
quality: 80
};
ImagePicker.getPictures(options).then((results) => {
for (var i = 0; i < results.length; i++) {
this.imgs.push(this.convertFileToDataURLviaFileReader(results[i]));
}
}, (err) => { });
Promise.all(this.imgs).then((results: any[]) => {
alert(results[0]);
//finally
});
}
}
从'@angular/core'导入{Component};
从“离子角度”导入{NavController、NavParams、ModalController};
从“离子本机”导入{ImagePicker};
@组成部分({
选择器:“页面地籍公告”,
templateUrl:'cadastar post.html'
})
导出类地籍图{
imgs:Array=[];
构造函数(公共navCtrl:NavController、公共navParams:navParams、公共modalCtrl:ModalController){
}
ionViewDidLoad(){
log('ionViewDidLoad地籍图片');
}
convertFileToDataURLviaFileReader(url){
返回新承诺(功能(解决、拒绝){
var xhr=new XMLHttpRequest();
xhr.onload=函数(){
var reader=new FileReader();
reader.onloadend=函数(){
解析(reader.result);
//回调(reader.result);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET',url);
xhr.responseType='blob';
xhr.send();
});
}
getImgs(){
变量选项={
最大图像:5,
品质:80
};
ImagePicker.getPictures(选项)。然后((结果)=>{
对于(var i=0;i{};
Promise.all(this.imgs).然后((结果:any[])=>{
警报(结果[0]);
//最后
});
}
}
如果您要求代码审查,那么错误的地方也是如此。如果您有特定的问题,请清楚地说明。要查看工作代码,请转到抱歉,我现在更清楚了