javascript - 如何将其变成回调函数?

标签 javascript callback

我是 Javascript 新手,目前回调让我有些困惑。如何将 teletyperDiologue 函数转换为回调?主要原因是我希望电传打字机在 displayOut 函数完成之前完成其工作。预先感谢您的帮助。

function displayOut() {
	
	// images
	document.getElementById("imgBox").style.backgroundImage = "url(" + db.rooms[roomLoc].roomImg + ")";
	// Diologue box
	diologueBox.innerHTML = ""; // Clear Box
	teleTyperDiologue(db.rooms[roomLoc].description + 
		" The room contains: " +
			(function() {
				let x = "";
				for (let i = 0; i < db.items.length; i++) {
					if (db.items[i].location === roomLoc && db.items[i].hidden === false) {
						x += db.items[i].name + ", "
					}
				}
				x = x.slice(0, x.length -2);
				if (x === "") {
					x = " nothing of special interest";
				}
				return x;
			})()
		+ ".");
};


// Teletyper for Diologue Box
function teleTyperDiologue(string) {
	for (let i = 0; i < string.length; i++) {
		setTimeout(function() {
			diologueBox.innerHTML += string.slice(i, i + 1);
		}, 5 * i);
	}
}

最佳答案

举个例子:

function test(a) { a(); }
function x() { alert('hello'); }
test(x);

就你的情况而言:

function displayOut(callback) {

  // images
  document.getElementById("imgBox").style.backgroundImage = "url(" + db.rooms[roomLoc].roomImg + ")";
  // Diologue box
  diologueBox.innerHTML = ""; // Clear Box
  callback(db.rooms[roomLoc].description + 
    " The room contains: " +
      (function() {
        let x = "";
        for (let i = 0; i < db.items.length; i++) {
          if (db.items[i].location === roomLoc && db.items[i].hidden === false) {
            x += db.items[i].name + ", "
          }
        }
        x = x.slice(0, x.length -2);
        if (x === "") {
          x = " nothing of special interest";
        }
        return x;
      })()
    + ".");
 };

 displayOut(teleTyperDiologue);

关于javascript - 如何将其变成回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000084/

相关文章:

javascript - 如何优化多个文件的输出 typescript 中的模块 namespace ,使用 gulp

javascript - 在 Ruby on Rails 中实现作业完成时的通知/警报弹出窗口

javascript - 如何在回调中分配变量?

java - 从 Cordova 上的 Activity 回调

javascript - 如何使用 JSON 数组填充数据表?

javascript - 弹出窗口在 ajax 成功处理程序中被阻止

javascript - 获取Google Charts表格的当前页面

javascript - JWT:用户打开新标签页时如何处理 GET 请求?

jquery - FancyBox加载后调用函数

javascript - ResponsiveVoice 只为多个话语调用 onend 回调一次