我想通过Messenger机器人发送一系列消息,介于两者之间并显示打字效果。目前我有这段代码:
action is None
但是,由于某些原因,不会出现打字效果。我是否需要使用Promises来确保在前一行完成时执行每一行?你能告诉我一个例子吗?
答案 0 :(得分:-1)
我不确定这将如何与Facebook整合,但是要延迟"打字"效果,您希望在数组中键入字符,然后使用计时器在循环时增加延迟时间。完成此任务不需要承诺。
你需要每个连续的计时器都有一个增加的延迟,因为所有设置的计时器将被#34;堆叠"在事件队列中然后它们将全部快速连续执行,如此快速地创建文本,它将立即显示。您需要确保每个计时器等待的时间比前一个计时器要长。
以下是一个例子:
var out = document.getElementById("output");
var message = "This is the text to type...";
// Turn string into proper array so .forEach can be used
var messageArray = Array.prototype.slice.call(message);
// Set the initial stagger amount between timer calls
var stagger = .5;
messageArray.forEach(function(char){
setTimeout(function(){
out.textContent += char;
}, 250 * (stagger++)); // Each timer will have a longer delay on it than the last one
});

<div id="output"></div>
&#13;
要使其适应您的Facebook用例,您只需将setTimeout
功能的内容替换为对Facebook Messenger机器人的调用,并将单个字符传递给它。