我不明白在不提供arg值的情况下如何调用带有arg的函数。我猜想由于PS5库中的loadStrings方法将进行异步调用,因此假设有返回的数据或消息,但是我仍然希望在函数调用中提供arg,因为函数定义需要一个arg。
试图在网上找到对此的解释,但到目前为止还不能。
这是所使用和起作用的。
function setup() {
loadStrings("lines.txt", doText);
}
function doText(data) {
for (var i=0; i<data.length; i++) {
text(data[i], 5, 20*i+20);
}
}
我认为要为doText调用提供一个参数,我必须将其包装在一个匿名函数中,以防止立即执行该操作,方法是在名称后添加打开的括号,然后在包装器内将其赋予arg
function setup() {
loadStrings("lines.txt", function () {doText(data);});
}
function doText(data) {
for (var i=0; i<data.length; i++) {
text(data[i], 5, 20*i+20);
}
}
那么在第一个示例中如何在没有提供实际arg值的情况下神奇地传递数据呢?
答案 0 :(得分:1)
loadStrings
似乎是一个函数,它期望第二个参数是一个函数,其中参数是处理第一个参数的结果。
例如
function loadStrings(a, f) {
new Promise(function(resolve) {
resolve(a)
})
.then(f)
}
function doText(data) {
for (var i=0; i<data.length; i++) {
console.log(data[i], 5, 20*i+20);
}
}
loadStrings("text.txt", doText)
可以被认为与
相同
function loadStrings(a, f) {
new Promise(function(resolve) {
resolve(a)
})
.then(function(data) {
f(data)
})
}
function doText(data) {
for (var i=0; i<data.length; i++) {
console.log(data[i], 5, 20*i+20);
}
}
loadStrings("text.txt", doText)
答案 1 :(得分:1)
这里没有魔术。如您在docs中阅读或在code of p5.js中所见 loadString正在读取给定文本文件的行,并将结果数组作为第一个参数传递给回调函数。