【发布时间】:2021-05-01 12:36:56
【问题描述】:
第一个(已解决)
我正在尝试 node.js 的承诺。
function testpromise(data, ms) {
return new Promise((resolve, reject) => {
if (data=="hello") {
setTimeout(resolve(data), ms);
return;
}
reject("emm");
})
}
testpromise("123", 3000)
.then((res) => { console.log(res) })
.catch((err) => { console.log(err) });
console.log("123");
如果我使用testpromise(),并提供一个“123”(reject)参数。
这个程序出错了。
否则,如果我提供一个“hello”参数(resolve),那么它是正确的。
为什么会这样?
最后
为此函数提供一个“hello”参数:
testpromise("hello", 3000)
.then((res) => { console.log(res) })
.catch((err) => { console.lof(err) });
console.log("123");
那么,节点返回是正确的。
但是
setTimeout()只有结果,没有延迟......
直观地说:
“你好”之前的“123”,这是正确的。
但是不耽误,不耽误,不耽误!!!
为什么?
请帮帮我!
非常感谢。
【问题讨论】:
-
错字:
console.lof不是函数。我认为在你的错误中写的正是这个 -
你的第二个问题:没有延迟,因为你只在 setTimepout 中包装
resolve,但reject你在检查条件后立即调用。resolve你也立即调用,因为你发送调用函数resolve的 result 作为 setTimeout 回调,而不是函数本身 -
那么,我该怎么办?
-
补充:
reject确实没有设置延迟。但是设置了“解决”,也没有延迟?
标签: javascript node.js asynchronous promise es6-promise