一个函数,它接受回调并创建只能调用一次的新版本的回调.Javascript

A function that takes a callback and creates a new version of the callback that can only be called once. Javascript

本文关键字:回调 调用 一次 新版本 Javascript 创建 函数 一个      更新时间:2023-09-26

我试图创建一个函数,该函数将另一个函数作为参数,并创建一个只能调用一次的新版本的回调函数。 如果初始调用,后续调用将返回输出。

这与重新创建下划线 .once 方法类似。

这是我到目前为止所拥有的。 我创建了一个收费信用卡功能。 我想创建此函数的新版本,该版本只能调用一次(chargeOnce)。 感谢解释。 谢谢。

编辑。 我希望 once 函数不依赖于函数外部的任何代码来工作(即外部计数器变量)。

var chargeCreditCard = function(num, price){
    return num*price;
};
function once (func) {
    var hasActionBeenCalled = false;
    var call = function () { 
        if(!hasActionBeenCalled) {
            hasActionBeenCalled = true;
            func;
        }
    }
}
var chargeOnce = once(chargeCreditCard);  
console.log(chargeOnce(2,3));
console.log(chargeOnce(4,5));

你的函数once不返回任何内容,你的函数call不调用任何内容。来得及

function once(func) {
    var hasActionBeenCalled = false;
    return function() { 
        if (!hasActionBeenCalled) {
            hasActionBeenCalled = true;
            return func.apply(this, arguments);
        }
    }
}

对于垃圾收集,我建议这样做

function once(func) {
    var res;
    return function() { 
        if (typeof func == "function") {
            res = func.apply(this, arguments);
            func = null; // unset func
        }
        return res;
    }
}