首页 > 解决方案 > 我想了解 JavaScript 中的延迟函数

问题描述

抱歉,我想问一下关于 Javascript 的问题。我最近才开始学习学习。

index.js

import FuncDelay from './FuctionDelay.js'
import Summ from './FuntionSumm.js'
Summ(4)
FuncDelay(1000,Summ(3))

FunctionSumm.js

export default function Summ(i){
    console.log(i+i)
}

函数延迟.js

我在这个 file.js 中有问题。这个文件关于延迟和回调函数但是函数在延迟后不能工作 //cry

export default function asynchronousDelay(delay, callback) {
	setTimeout(function(){ 
		callback
	}, delay);
}

谢谢你的知识

标签: javascriptnode.js

解决方案


由于回调是(或必须是)一个函数,您需要像这样调用它:callback(),您忘记了括号。

首先,当您将带括号的函数作为大函数的参数时,参数函数在大函数之前执行。

FuncDelay(1000,Summ(3))FuncDelay(1000,undefined)在 functDelay 启动之前转换为,因为undefined 是 Summ 的返回值。这就解释了为什么 console.log(typeto callback) 显示未定义。

你可以去掉括号,所以参数将是函数而不是函数的返回:FuncDelay(1000,Summ)但你显然失去了其中的参数 3,所以你需要创建一个没有任何参数的函数来保存你的函数的参数。快速符号是function(){Summ(3);}.


推荐阅读