如果我没有记错,那么承诺应该在任何时候抛出一个错误时捕获一个错误,这样就可以使用Promise.catch()来处理该错误。但是,我不记得有任何异常,但是当我在setTimeout()中抛出一个错误时,它不知何故不起作用。
有人能解释一下为什么这不管用吗?还是仅仅是NodeJS中的一个bug?
测试代码
// This works!
function async() {
return new Promise(function (resolve, reject) {
throw new Error('test');
我是Angular2编程的初学者。我正在尝试编写一个返回自定义承诺的函数。看起来是这样的:
removeItem(item, removeFile: boolean = true): Promise <any> {
// remove the item from the list
let index = this.items.indexOf(item);
if (index > -1) { this.items.splice(index, 1); }
// now if removeFile is true, al
我有一个脚本,比如:
var a = [{'a': 1},{'b': 2}]
var allPromises = new Array(a.length)
for(var i in a) {
allPromises[i] = Promise.resolve().then(response => {
console.log(i)
console.log(a[i])
// Do somethig on every loop with key and value
return i
})
}
Prom
我正在使用谷歌colab来捕获网络摄像头视频。我使用Promises来开始和结束点击视频。我想停止使用Promise每5秒捕获一次视频。 // start recording
await new Promise((resolve) => {
capture.onclick = resolve;
});
recorder.start();
capture.replaceWith(stopCapture);
// use a promise to tell it to stop recording
// I want to stop recordi
来自
new Promise(function(resolve, reject) {
setTimeout(() => {
throw new Error("Whoops!");
}, 1000);
}).catch(alert);
它说这个代码块中的捕获将无法工作,因为here the error is generated not while the executor is running, but later. So the promise can’t handle it.
然而,在
Promise.all([
new Promise((resol
我不明白为什么我的承诺不起作用,以及如何修复它。这就是:
let loadedNum = 0;
function loaded(){
loadedNum++
console.log(loadedNum);
return new Promise((resolve) => {
if(loadedNum >= 5){
console.log('Entered if statment and should resolve the promise')
resolve();
}
});
}
我是javascript的大一新生,现在正在学习应许部分。
下面我一直在尝试用setTimeout编写一个承诺链,期望它在2秒后打印“第一个结果”,再在2秒后打印“第二个结果”。然而,它同时打印“第一结果”和“第二结果”。
有人能告诉我我在哪里犯的错误吗?
var doSomething = new Promise(function(resolve,reject){
setTimeout(function(){
resolve('first result');
},2000);
});
var doSomethingElse = ne
我正在学习承诺,并试图使用下面的代码将它们链接起来。在这里,.then()首先被执行:
function myPromise1()
{
console.log("Promise", 1);
return Promise.all([
new Promise((resolve, reject) => {
setTimeout(() => {
console.log("This should be before 'Yay!' for 1");
resolve(1);
}
我正在探索Promise.all()的用法,但我不知道为什么它没有给我带来预期的结果。我试着一步一步地说明这一点。
让我们看看我的代码:
var p2 = 1337;
var p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'foo');
});
var apiCall = async () =>{
// to simulate a api call that will response after 5 sec
setTimeout(() => {r
你能让一个函数等待,直到另一个函数设置一个变量吗?这就是我的例子:
function setvar(){
//some process that may take a while
myvar = 'value';
}
const promise1 = new Promise((resolve, reject) => {
resolve(myvar);
});
promise1.then((value) => {
console.log(value);
});
这似乎不起作用,即使变量还没有准备好,函数也会启动。我该怎么办?我不希望设置超时或设置间隔,