网站搜索

javascript - 在 Monad 的意义上,递归连接 Promises 的含义是什么?

我知道从技术上讲,JavaScript 的 promise 既不是函子也不是 Haskell 意义上的单子,因为(除了其他原因)

  • 它们包括一个 bind 操作,当传入纯函数(因此类型模糊)时,会回退到 map
  • 无论是 Promise 构造函数还是 resolve(也称 return)都会递归地合并嵌套的 promise
  • 阅读更多 →

javascript - CosmosDB 存储过程 - 使用 promise 而不是回调

是否可以在 CosmosDB(DocumentDB)存储过程 API 调用中使用 JavaScript Promise 替代常规回调?一种用法是实现分页。

例如

token = getToken(); doSomething(token); //.... function getToken(....) { //... collection.queryDocuments(link, query, queryOptions, function(error, documents, responseOptions) { return re

阅读更多 →

javascript - 使用 axios 时的 UnhandledPromiseRejectionWarning 错误

我收到了一个 “UnhandledPromiseRejectionWarning: Unhandled promise rejection.” 错误,这个错误不让我执行上面的这个简单请求:

app.get('/', function (req, res) { const GITHUB_AUTH_ACCESSTOKEN_URL = 'https://github.com/login/oauth/access_token' const CLIENT_ID = '123' const CLIENT_SECRET = '456' axios(

阅读更多 →

javascript - 在同步中获取已解决的 Promise 的值

如果我们知道一个 Promise 肯定已解决,我们如何访问其值?如果不能,为什么不能?

let a = Promise.resolve(123); console.log(a.value); // ???

以下方法不起作用——它打印“First, Last, 123”

console.log("First"); Promise.resolve(123).then(console.log); console.log("Last");

我想问如何同步获取一个已经解决的 Promise 的

阅读更多 →

javascript - 在不使用 async/await 的情况下顺序执行一组 promises

假设我有一个由 promise 组成的数组。我的数组中的每个元素都是一个 knex.js 查询构建器,准备好执行并返回一个 promise。

我如何才能顺序运行这个数组的每个元素。这个数组是动态构建的。

let promisesArray = [q1,q2,q3] ;

每个 q 本身不是一个承诺,但它在执行时会返回一个承诺。

答案#1

这里可能是一个选项:

let p

阅读更多 →

赋值运算符、map 和 promises。那段代码有什么问题?JavaScript

我在做一些事情时遇到了一个我无法理解的问题。我简化了代码,得到如下结果:

function somePromise() { return new Promise((resolve, reject) => { resolve(1); }); } async function main() { let count = 0; const arr = [1, 2, 3, 4, 5]; const promises =

阅读更多 →

javascript - 如何同步访问 Promise 的结果?

让我先说明一下,我喜欢异步代码。我绝不会在生产环境中将异步代码包装在同步包装器中,但这仍然是我想学习如何做的事情。我具体说的是在 Node.JS 中,而不是浏览器中。有许多方法可以同步地访问异步函数的结果,比如使用 child_process.spawnSync 或者使用 worker 和 Atomics。这些方法的问题在于:

let prom = Promise.resolve(4); // It is now impossible (as far as I know) to access the result of prom syn

阅读更多 →

javascript - 等待一半的承诺被解决

我想在NodeJS中并行处理多个异步调用。如果其中的特定数量的调用完成,或者所有调用都完成(有些成功,有些失败),我就可以继续。如何做到这一点?

Promise.All() 会在所有 promise 完成时解决,而 Promise.Any() 会在任何一个 promise 解决或全部被拒绝时解决。有没有办法等待 50% 的 promises 被解决,或者等待 n 个 promises 被解决,而不是等待全部解决。

答案#1

你可以编写一个函数,为每个给定的

阅读更多 →

javascript - 我的 promises 在 jQuery 1.8 中不再工作

这个代码片段在 1.7.2 中可以使用,支持成功/错误回调以及 Promise 风格的回调。在 1.8.2 中,成功/错误回调仍然可以使用,但 Promise 不行。我怀疑 return dfd.promise(jqXHR); 这一行是问题所在,但我不确定。

$.ajaxPrefilter(function (options, originalOptions, jqXHR) { // Don't infinitely recurse originalOptions._retry = isNaN(originalOptions._retry) ? Common.

阅读更多 →

javascript - $http promise 链以错误顺序运行

我刚接触 AngularJS。我的目标非常简单。我想进行一次 Ajax 调用以获取数据,并且在完成后,我想进行第二次调用以获取另一组依赖于第一组信息的数据。

我正在尝试使用 Promise 机制来实现这一点,这样我就可以利用链式调用而不是嵌套的 ajax 调用,并且更好地保留独立函数的能力,以便根据需要将它们连接在一起。

我的代码如下所示:

var promiseGetWorkTypes = function ($q, $scope, $http) { console.log("promiseGetWorkTypes"); return $q(function (resolve, re

阅读更多 →