我正在尝试理解JavaScript中的promise对象。这里我有一小段代码。我在promise对象的两侧有一个promise对象和两个console.log()。我以为它会打印出来
hi
那里!
zami
但它是打印出来的
hi
zami
There!
为什么会这样呢?我对promise的工作原理一无所知,但我了解JavaScript中异步回调的工作原理。有没有人能对这个话题有所启发?
console.log('hi');
var myPromise = new Promise(function (resolve, reject) {
if (true) {
这是我第一次用承诺和回调编写This循环。我不知道它为什么会导致无限循环。怎么修呢?
async function getResult(){
return new Promise((resolve, reject) => {
let params ="some input and setting";
let next = "hasNext";
let array = [];
let error = null;
while(next !== null){
我最近深入到了NodeJS的幕后,需要对它的队列和事件循环进行一些澄清。
NodeJS是单线程的,所以如果我有一个函数:,它是同步函数并按原样调用它,那么在得到之前可能需要一段时间。
但是,如果我将这个函数包装在一个Promise中,它将如何表现呢?例如:
function findTheMeaningOfLifeAsync(){
return new Promise(function(resolve, reject){
try {
var meaningOfLife = findTheMeaningOfLife();
r
我对javascript的承诺方法很陌生。我有一个html页面,需要使用javascript进行几次api调用。api调用应该一个接一个地进行(只有当一个api调用成功时,转到下一个api调用等)。
我尝试在链中使用javascript承诺(下面的伪代码),这是工作的。
function getalldata()
{
//few lines of code before 1st api call
APImethod1.then{
//few lines of code after 1st api call
}
.then{
/fe
快递文档说:
不要使用同步函数
同步函数和方法将执行过程捆绑起来,直到它们返回为止。对同步函数的单个调用可能在几微秒或毫秒内返回,但是在高流量网站中,这些调用会增加并降低应用程序的性能。避免在生产中使用。
因此,我的问题是,在节点/表达式的上下文中,如果我有一个函数接受一些静态值并返回一个计算结果(通常我会认为它是一个“同步函数”),那么将该函数封装在new Promise和resolve中是最佳实践吗?还是这会造成任何不必要的开销?例如:
当前:
//inside my index.js
var myArgument = 'some long string';
var
我正在尝试创建一系列的承诺,这样我就可以对承诺进行批处理,而不是一起执行它们,以避免关闭服务器。我想一次执行多达20个承诺。我编写了以下代码:
let promises = [];
let create;
let update;
let i=0;
let users = users.json;
if (users && usersjson.users.length) {
for (const user of users) {
if (userexists) {
update = new promise(async (resolve,reject) =&
我不确定返回new Promise与使用Promise.resolve()的用法如何,并希望确保我对这些内容的理解是正确的。
鉴于以下3项职能:
function testFunc() {
return Promise.resolve().then(() => {
//anything asynchronous in here has now become synchronous and
//execution of result of the function happens after this??
所以我尝试运行两个重复的函数,这两个函数都使用异步。这两个函数在某些时候都使用异步等待功能。问题是,当一个函数使用await时,它会暂停两个函数。我如何阻止这种情况发生,这样当一个函数使用await时,另一个函数就不会暂停。谢谢。下面是一个例子。
const collectInfo = async () => {
return new Promise(async function(resolve, reject) {
// Collect info from the database then
resolve(data);
});
}
co
在测试中,我发现JavaScript承诺始终是异步的,不管它们在链中是否包含任何异步函数。
下面是一些显示控制台中操作顺序的代码。如果您运行它,您将看到即使每个函数都是同步的,输出显示了并行运行的aPromise()调用,以及在运行2完成之前没有发生的"surprisingly this happens after run 2 finishes"。
function aPromise() {
return new Promise(function(resolve, reject) {
console.log("making promise A")