Javascript 如何推荐Cordova文件插件?
我想在apachecordova文件插件中推荐一种方法,但我对“this”有一个问题 最初,我使用的是箭头函数,但当“this”问题开始出现时,我删除了这些函数Javascript 如何推荐Cordova文件插件?,javascript,cordova,ecmascript-6,async-await,cordova-plugins,Javascript,Cordova,Ecmascript 6,Async Await,Cordova Plugins,我想在apachecordova文件插件中推荐一种方法,但我对“this”有一个问题 最初,我使用的是箭头函数,但当“this”问题开始出现时,我删除了这些函数 /** * @param {Function} funcToPromisify - * @param {*} firstArgForFuncToPromisify - * @returns {Promise<any>} - */ const promisifyFunct
/**
* @param {Function} funcToPromisify -
* @param {*} firstArgForFuncToPromisify -
* @returns {Promise<any>} -
*/
const promisifyFunctionOne = function(funcToPromisify, firstArgForFuncToPromisify) {
return new Promise(function (resolve, reject) {
funcToPromisify(firstArgForFuncToPromisify, resolve, reject);
});
};
/**
* @param {Function} funcToPromisify -
* @returns {Promise<any>} -
*/
const promisifyFunctionTwo = function(funcToPromisify) {
return new Promise(function(resolve, reject) {
funcToPromisify(resolve, reject);
}
);
};
/**
* @param {string} pathToFile -
* @param {Function} urlResolverFunc -
* @param {object} stateObj -
* @returns {void} -
*/
const readFile = async function(pathToFile, urlResolverFunc) {
const fileEntry = await promisifyFunctionOne(urlResolverFunc, pathToFile);
console.log(fileEntry);
try {
const fileObj = await promisifyFunctionTwo(fileEntry.file);
let reader = new FileReader();
reader.onloadend = function() {
console.log('Successful file read: ' + this.result);
};
reader.readAsText(fileObj);
}
catch(error) {
console.log(error);
}
};
// Example of how readFile() is being called.
readFile(pathToFile, window.resolveLocalFileSystemURL);
/**
*@param{Function}funcToPromisify-
*@param{*}firstArgForFuncToPromisify-
*@returns{Promise在定义promisify
时,可以使用箭头函数。下面是一个基本示例,它不依赖于上下文(此
)-
const promisify=(f)=>
(…a)=>新承诺((res,rej)=>f(…a,res,rej))
常量基本=(a、b、c、成功、失败)=>
c==0
?故障(错误(“c不能为零”))
:成功(a+b+c)
promisify(基本)(1,2,3)。然后(console.log,console.error)
// 6
promisify(基本)(1,2,0)。然后(console.log,console.error)
//错误:“c不能为零”
当您调用promisifyFunctionTwo(fileEntry.file)
时,file
会丢失其上下文,fileEntry
-尝试将fileEntry.file
替换为fileEntry.file.bind(fileEntry)
-@user633183,您是正确的。如果您想将注释转换为答案,我将接受它。