var GoodMan = function(str){
var callback_f = new Object;
str1 = "I am " + str;
console.log(str1);
callback_f.rest = async function(num){
await sleep(num * 1000);
console.log("Start learning after " + num + " seconds");
return callback_f;
};
callback_f.learn = function(str){
str2 = "Leaning " + str;
console.log(str2);
}
return callback_f;
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
GoodMan("Tom").rest(10).learn("computer");
错误输出:未捕获的TypeError:无法读取未定义的属性“学习”,位置为:1:24
这是一个面试问题。我无法自己解决此问题。
以下问题:
创建函数GoodMan
GoodMan(“汤姆”)
输出:我是汤姆
GoodMan(“ Tom”)。rest(10).learn(“ computer”)
输出:
我是汤姆
//等待10秒
10秒后开始学习
学习计算机
GoodMan(“ Tom”)。restFirst(5).learn(“ english”)
输出
//等待5秒
5秒后开始学习
我是汤姆
学习英语
根据面试题的要求:GoodMan(“ Tom”)。rest(10).learn(“ computer”)
还有其他方法可以使该过程在Javascript中睡眠10秒吗?
基于@Jaromanda X的正确解释,代码应类似于:
var GoodMan = function(str){
var callback_f = new Object;
str1 = "I am " + str;
console.log(str1);
callback_f.rest = async function(num){
await sleep(num * 1000);
console.log("Start learning after " + num + " seconds");
return callback_f;
};
callback_f.learn = function(str){
str2 = "Leaning " + str;
console.log(str2);
}
return callback_f;
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
GoodMan("Tom").rest(10).then((cbf)=>cbf.learn("computer"));