用 ChatGPT 写代码,看完很无语
后续:
运行的时候发现,它这个代码就是延时执行,不是我想要的,于是又向它反馈,第二次给的答案就比较靠谱。视频没有录,所以把第二次的内容贴在下边。
我:不是这样的,是执行完后冷却,不是执行前冷却,你这样变成延时执行了。首先是立马运行,紧接着冷却,在冷却时间内,不能执行,直到冷却时间过去才能再次执行。
ChatGPT:
可以使用以下代码来实现您的需求:
function delayFunc(func, time, obj) {
let timeout;
return function() {
let args = arguments;
let context = obj || this;
if (!timeout) {
// 如果当前没有冷却时间,则立即执行函数
func.apply(context, args);
timeout = setTimeout(function() {
// 在冷却时间后清除冷却
timeout = null;
}, time);
}
};
}
使用方法与上述代码类似。例如:
// 不带对象方法的情况
let func = function() {
console.log("I am delayed function");
}
let delayedFunc = delayFunc(func, 1000);
delayedFunc(); // 这个时候会立即执行 func 函数,并在1秒后解除冷却
delayedFunc(); // 这个时候会忽略执行,因为此时处于冷却状态
// 1秒后,冷却时间过去
delayedFunc(); // 这个时候会再次立即执行 func 函数,并在1秒后解除冷却
希望这些修改能够满足您的需求。请让我知道如果有更多问题。
之所以提问这个,是因为之前我也写了一个这样的函数,我的代码:
function coolingFn(fn, time = 0, context) {
let ready = true;
return function cooling() {
if (ready) {
if (time) {
ready = false;
setTimeout(() => {
ready = true;
}, time)
}
return fn.apply(context || this, arguments);
}
}
}
ChatGPT 改变了我对人工智能程序的认识。。。以后写代码直接对着电脑唠嗑就好了