gpt4 book ai didi

javascript - 如何将 require ('' ) 对象传递到绑定(bind)对象的范围中?

转载 作者:行者123 更新时间:2023-12-03 11:05:21 24 4
gpt4 key购买 nike

我正在尝试使用 javascript 绑定(bind)函数将我需要的文件传递到作用域中,并让它使用该对象的功能来执行一些代码。

这是一个递归函数,简单来说,我有一个对象:

var tts = require('./tts')

该对象使用 Web API 的语音合成功能将传入的文本转换为语音。

所以,我有一个递归函数,在第一个函数完成后,说一些事情,应该说下一个事情。

function saySomething(idx) {
tts('first thing',saysomething.bind(this,'next thing'))
}

但是不幸的是,这不起作用。

谁能告诉我我做错了什么?

我的代码:

tts code

recursive function code

附注我正在使用 browserify 将节点样式代码编译为浏览器友好的代码

最佳答案

假设tts()是一个异步函数,在完成时调用其回调,您可以在完成后调用下一个函数,如下所示:

function saySomething(idx) {
tts('first thing', function() {
tts('next thing');
})
}

这会说第一件事,然后说下一步,然后完成。虽然乍一看,这似乎是递归的,但由于回调的异步性质,它不会像常规递归调用那样在每次调用时累积堆栈帧。对 tts() 的第一次调用实际上在第二次调用之前返回。

如果您真正想做的是迭代一系列要说的话,您可以这样做:

var phrases = ["one", "two", "three", "four"];

function sayPhrases(items) {
var index = 0;

function next() {
if (index < items.length) {
tts(items[index++], next);
}
}
next();
}

sayPhrases(phrases);

关于javascript - 如何将 require ('' ) 对象传递到绑定(bind)对象的范围中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27885049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com