我需要制作一个使用功能工具盖章狗然后延迟它来盖章的应用程序。您能否使用功能工具为两个对象加盖印章(不能同时)为我提供帮助?谢谢。
我尝试使用...
function open2() {
// code here
}
而且我也尝试使用...
function open() {
// code here
}
两个人
function open(){
stamp ('dog14',600,850,200)
sound ('dog')
sound('old man')
stamp('old man',300,700)
}
当我使用该代码时,狗和老人被同时盖章,但是我需要在狗之后3秒给老人盖章。
答案 0 :(得分:2)
这看起来像是一个作业问题,所以我会提示您一个很好的答案。要引入延迟,可以使用setTimeout
或将一个代码包装在promise中。
超时示例:
function stamp (x) {
console.log("Stamped " + x)
}
function sound (x) {
console.log("Sounded " + x)
}
function open() {
stamp ('dog14',600,850,200)
sound ('dog')
setTimeout(function () {
sound('old man')
stamp('old man',300,700)
}, 3000) // executes after 3,000 milliseconds
}
open()
您可能还想使用一个承诺。此处的区别是,promise将确保您的事件按顺序执行。如果您使用了超时,则无论第一部分是否运行(为狗加盖时间戳),代码的第二位(给老人盖章)都会发生。一个承诺将确保狗首先发生,然后是老人。
您可以通过多种方法来执行此操作。这是您可能想探索的一种。
function stampAndSoundDog () {
return new Promise(function(resolve, reject) {
// stamp and sound dog here
// then call resolve after a 3s timeout
})
}
function open {
stampAndSoundDog.then(function() {
// stamp and sound the old man here
})
}
答案 1 :(得分:0)
您可以定义一个函数并包括一个超时。包括 Promises 是管理异步操作的一种更简单的选择。以下是四个 功能:
figure
为空或未定义,则承诺将被拒绝。 catch
方法可以捕获并记录返回的内容。在这种情况下,将返回'Nothing to stamp and sound'
。stamp
和sound
被调用,诺言解决
function stamp(figure){
console.log(figure + ' stamped');
}
function sound(figure){
console.log(figure + ' sounded');
}
function stampAndSound(figure) {
return new Promise(function(resolve, reject) {
// if empty argument is given, reject promise
if(figure === undefined || figure == ''){
reject('Nothing to stamp and sound');
}else{
// otherwise stamp and sound
stamp(figure);
sound(figure);
resolve();
}
})
}
// define variables ...
let oldMan = 'old man';
//let dog = ''; // uncomment this line and comment the one below to test how the promise rejects
let dog = 'pitbull';
function open(){
// stampAndSound oldMan first then dog
stampAndSound(oldMan).then(function() {
// wait three seconds then stamp and sound dog
setTimeout(function(){
stampAndSound(dog).catch(function(error){ // if promise gets rejected..
console.log('Error: ' + error);
});
}, 3000)
}).catch(function(error){ // if promise gets rejected..
console.log('Error: ' + error);
})
}
open();
const stamp = (figure) => { console.log(`${figure} stamped`); }
const sound = (figure) => { console.log(`${figure} sounded`); }
const stampAndSound = (figure) => {
return new Promise((resolve, reject) => {
if(figure === undefined || figure == ''){
reject('Nothing to stamp and sound');
}else{
stamp(figure);
sound(figure);
resolve();
}
})
}
// define variables ...
let oldMan = 'old man';
let dog = 'pitbull';
const open = () => {
stampAndSound(oldMan).then(() => {
setTimeout(() => {
stampAndSound(dog).catch((error) => {
console.log('Error: ' + error);
});
}, 3000);
}).catch((error) => {
console.log('Error: ' + error);
})
}
open();