const promise = new Promise((resolve: Function, reject: Function) => {
if (this.fileInfo !== undefined) {
const reader: FileReader = new FileReader();
reader.readAsText(files[0], 'utf-8');
reader.onload = () => {
if (reader.result) {
.....
resolve();
reader.onerror = () => {
......
reject();
promise.then(() => {
console.log('success');
用Promise实现同步效果。
const promise = new Promise((resolve: Function, reject: Function) => { if (this.fileInfo !== undefined) { const reader: FileReader = new FileReader(); reader.readAsText(files[0], 'utf-8'); ...
Filereader与Promise的搭配使用/JavaScript异步回调函数返回值
完美解决!!!!!!!
工作中项目需求:读取用户上传的Excel文件,并将Excel转换为json数据格式,然后上传至后台数据库。
问题点:Filereader中new Filereader.onload = function()为异步回调函数,reader中获取到的数据无法传递到主函数外部。
js的文件读取
onload函数没办法直接返回值,但是有很多时候我们又需要返回一个在处理后的值。实现方法是传递一个绑定了this的回调函数
const callback = (result)=>{//定义回调函数
this.result = result
console.log(this.result)
file_name = this.selectFile.name;
if(!file_name.match(reg)){
fileReader的load事件是异步的 通过promise使其同步加载
export const loadFileAsync = (file: File): Promise<string | ArrayBuffer> =>
new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.readAsDataURL(file);
fileReader.o
console.log('文件', file)
return new Promise((resolve, reject) => {
const
reader = new Fil
eRead
er();
reader.
readAsDataURL(file);
charset: 可选。指定src引入代码的字符集,大多数浏览器忽略该值。
def
er: boolean, 可选。延迟脚本
执行,相当于将script标签放入页面body标签的底部,
js脚本会在document的DOMContentLoaded之前
执行。除IE和较新版本的Firefox外,其他浏览器并未支持。
language: 已废弃。大部分浏览器
1、使用的方式基本相当于FileReader,不过是以同步的形式读取。
2、FileReaderSync是同步读取文件内容,所以只能在webworker中使用,不然会造成主线程的阻塞。
// 由于 只能在 FileReader 实例的 onload 回调中获取到结果
// 故,通过 promise 将结果 resolve 出去
// 并,借由 async/await 将获取结果的流程同步执行
// 则,可以确保在遍历中能够准确获取到所有文件中的内容
//* js 获取文件内容(以下仅作为text解读,也可解读成二进制内容)
function readFile(file) {
return new Promise((resolve, reject) => {
// 创建文
1 关于异步操作的一些概念
虽然JavaScript引擎拥有多个线程,但是单个脚本只能在一个线程上运行,也就是说,JavaScript只能同时执行一个任务,其他的任务则必须在当前任务后面排队等待,这被称之为单线程模型。
在JavaScript中,程序里的任务可以被分为两类:同步任务和异步任务。
同步任务(synchronous):即在主线程上执行的任务,并且之所以同步,是因为只有执行完前一个任务才能执行后一个任务。
异步任务(asynchronous):说白了就是被JavaScript引擎放进任务队
function uploadFile(file) {
return new Promise(function(resolve, reject) {
let reader = new FileReader()
reader.readAsArrayBuffer(file)
reader.onload = ...
angular.json是Angular CLI的配置文件,用于配置Angular项目的构建、部署、测试等各个方面。
在使用Angular CLI创建项目时,会自动创建angular.json文件,并默认配置一些基础设置,如项目名称、源码目录、输出目录、开发服务器端口等。
在使用Angular CLI构建、部署、测试等命令时,会读取angular.json文件中的配置进行相应操作。比如,使用ng serve命令启动开发服务器时,就会读取angular.json文件中的"serve"属性进行配置。
在开发过程中,如果需要修改项目的配置,可以直接修改angular.json文件。修改后,再次执行相应的命令即可生效。
总之,angular.json文件是Angular CLI项目的重要配置文件,用于控制项目的各个方面,开发者需要对其进行熟练掌握。