为什么此功能,无需数据ARG引用提供?

问题描述 投票:1回答:2

我不明白这是如何函数,它的ARG可以不提供ARG值调用。我猜测,因为从PS5库loadStrings方法将一个异步调用,有返回的数据或消息的假设,但我仍然期望,因为函数定义预计一个在函数调用中提供的精氨酸。

试图找到网页上解释这一点,但不能这么远。

这就是使用和作品。

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通话提供了争执,我不得不把它包在一个匿名函数,以防止因名后的括号开放出现,然后给它它的精氨酸包装内立即执行。

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提供的数据?

javascript ecmascript-6
2个回答
1
投票

这里没有魔法。正如你可以在docs阅读或看到code of p5.js使用loadString正在读给定文本文件的行以及将得到的数组作为第一个参数回调函数。


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)

参见Are there differences between .then(functionReference) and .then(function(value){return functionReference(value)})?

© www.soinside.com 2019 - 2024. All rights reserved.