相关疑难解决方法(0)

为什么我不能扔进Promise.catch处理程序?

为什么我不能Error在catch回调中抛出一个内部并让进程处理错误,就好像它在任何其他范围内一样?

如果我什么都不做console.log(err)就会被打印出去,我对发生的事情一无所知.这个过程刚刚结束......

例:

function do1() {
    return new Promise(function(resolve, reject) {
        throw new Error('do1');
        setTimeout(resolve, 1000)
    });
}

function do2() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            reject(new Error('do2'));
        }, 1000)
    });
}

do1().then(do2).catch(function(err) {
    //console.log(err.stack); // This is the only way to see the stack
    throw err; // This does nothing
});
Run Code Online (Sandbox Code Playgroud)

如果回调在主线程中执行,为什么Error会被黑洞吞噬?

javascript asynchronous throw promise es6-promise

119
推荐指数
3
解决办法
7万
查看次数

setTimeout是用javascript做异步函数的好方法吗?

在网上搜索异步函数,我发现很多文章使用setTimeout来完成这项工作:

window.setTimeout(function() {
   console.log("second");
}, 0);
console.log("first");
Run Code Online (Sandbox Code Playgroud)

输出:

first
second
Run Code Online (Sandbox Code Playgroud)

这有效,但是最佳做法?

javascript jquery

52
推荐指数
1
解决办法
5万
查看次数

了解NodeJS上的异步/等待

我想我对它的理解可能是由我与经验所影响.NETasync/await,所以我想一些代码示例:

我正在尝试使快速控制器在返回响应之前等待5秒钟:

const getUsers = async (ms) => {
  var wait = ms => new Promise(resolve => setTimeout(resolve, ms));

  await wait(ms);
};


export const index = (req, res) => {
  async () => {
    await getUsers(5000);

    res.json([
      {
        id: 1,
        name: 'John Doe',
      },
      { id: 2,
        name: 'Jane Doe',
      },
    ]);
  };
};
Run Code Online (Sandbox Code Playgroud)

此代码不起作用,浏览器保持加载和加载,从不显示任何东西.

getUser我根据这个SO答案和控制器方法建立的功能,基于我(错误的)理解它的工作方式,所以我想要一些澄清和纠正:

我应该什么时候使用await

据我所知,你应该awaitasync函数调用之前使用.它是否正确?另外,为什么我可以在返回promise的非异步函数之前调用await?

我应该什么时候使用async

根据我的理解,您将一个函数标记为一个函数,async以便可以使用await关键字调用它.它是否正确?另外,[为什么]我必须await …

javascript asynchronous node.js async-await

8
推荐指数
2
解决办法
4632
查看次数

反应本机异步/等待不等待

我是本机反应的新手。我正在尝试使用async / await,但它不等待其他函数返回响应并立即发出警报,它将不等待4秒。这是我的代码,请帮助我。提前致谢:

import {
  AsyncStorage,
  Platform
} from 'react-native';


export const  hello =async()=>{
 const value=await refreshToken();
 alert(value);
 return "adasd";
}


const refreshToken=async()=>{
  setTimeout(async()=>{
    return true;
  },4000);
}
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs react-native

2
推荐指数
1
解决办法
4910
查看次数