我有一个非常简单的函数,即使用HTML 5 FileReader读取文件:
var reader = new FileReader();
var currentFileType = file.type;
reader.onloadend = readCompleted;
reader.onerror = fail;
reader.readAsArrayBuffer(file);
并且readCompleted回调函数如下所示:
function readCompleted(evt) {
if (evt.target.readyState != FileReader.DONE) {
return;
}
// The binary data is the result.
var requestData = evt.target.result;
// SOME MORE CODE HERE
}
事情是' evt'默认情况下传递参数。为了使currentFileType变量可用,我如何将一个附加参数传递给此回调函数?我希望这个函数签名看起来像这样:function readCompleted(evt, fileType) {//code here}
并以某种方式将currentFileType传递给它。
答案 0 :(得分:2)
您可以使用Function.bind
将参数绑定到函数,然后再将其分配给onloadend
。
例如:
var a = function() { console.log(arguments); }
var b = a.bind(null, 123)
b('abc') // -> [123, "abc"]
在你的情况下,它将是:
reader.onloadend = readCompleted.bind(null, file.type);
和readCompleted
应具有以下签名:
function readCompleted(fileType, evt) { ... }
答案 1 :(得分:1)
只需为reader.onloadend
分配不同的功能。
reader.onloadend = function(evt) {
readCompleted(evt, currentFileType);
};
答案 2 :(得分:0)
你可以这样写,
tab <- aggregate(theData, list(theData$surname), length)
tab$size_check <- tab$surname == tab$FamilySize
tab
## Group.1 surname FamilySize size_check
## 1 Allen 1 1 TRUE
## 2 McGraw 1 1 TRUE
## 3 Parker 2 2 TRUE
## 4 Smith 3 3 TRUE
readCompleted将如下所示,
studentBindingSource.EndEdit();
**studentTableAdapter.UpdateStudentData(this.k5smsData.Student);**
panel1.Enabled = false;