gpt4 book ai didi

javascript - 了解回调函数

转载 作者:行者123 更新时间:2023-11-30 09:30:13 24 4
gpt4 key购买 nike

我在使用以下代码时遇到问题:

var placeingOrders = function(orderNumber) {
console.log("Order number: ", orderNumber);
requestedOrder(orderNumber, returnOrder);
};

function requestedOrder(orderNumber, callback) {
setTimeout(orderNumber, callback, 5000);
}

function returnOrder() {
console.log("Order number: " , " is delivered");
}

我试图在回调函数上传递参数,但是当我像上面那样做时,我得到了以下错误代码:

timers.js:348
throw new TypeError('"callback" argument must be a function');
^

TypeError: "callback" argument must be a function
at exports.setTimeout (timers.js:348:11)

当然,如果我在没有参数的情况下运行相同的代码,它也能正常工作。

var placeingOrders = function(orderNumber) {
console.log("Order number: ", orderNumber);
requestedOrder(returnOrder);
};

function requestedOrder(callback) {
setTimeout(callback, 5000);
}

function returnOrder() {
console.log("Order number: " , orderNumber , " is delivered");
}

我想知道我到底做错了什么。如果我想传递参数,我该如何正确使用这个回调函数。

(ps:我的母语不是英语,对不起)

最佳答案

为什么会出现此错误?

setTimeout 期望获取回调函数作为第一个参数,但在第一个地方你传递了一个数字,所以为什么异常。第二种情况有效,因为您从一开始就删除了 orderNumber,函数获取了它。

你需要在第二个地方之后传递回调函数的参数。查看setTimeout函数签名。首先是回调函数,第二是时间,至少调用该函数,然后传递的所有内容都作为参数传递给回调函数。

这是函数的签名 - [] 是可选的。

setTimeout(function[, delay, param1, param2, ...])

代码

var placeingOrders = function(orderNumber) {
console.log("Order number: ", orderNumber);
requestedOrder(orderNumber, returnOrder);
};

function requestedOrder(orderNumber, callback) {
setTimeout(callback, 5000, orderNumber);
}

function returnOrder(orderNumber) {
console.log("Order number: " + orderNumber + " is delivered");
}

placeingOrders(14);

关于javascript - 了解回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46754835/

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