我想dynamic包括JavaScript文件到我的js文件。 我做了一些研究,发现jQuery $ .getScript()方法将是一个理想的方式去。 // jQuery $.getScript('/path/to/imported/script.js', function() { // script is now loaded and executed. // put your dependent JS here. // what if the JS code is dependent on multiple JS files? }); 但我想知道这种方法是否可以一次加载多个脚本? 为什么我问这是因为有时我的javascript文件是依赖于多个js文件。 先谢谢你。
我有一个promise对象数组,它们必须按照它们在数组中列出的顺序来parsing,也就是说,我们不能尝试parsing一个元素,直到前一个元素已经被parsing(方法all([…]) )。 如果一个元素被拒绝,我需要链条立即拒绝,而不是试图解决下面的元素。 我怎样才能实现这个,或者是否有这样的sequence模式的现有实现? function sequence(arr) { return new Promise(function (resolve, reject) { // try resolving all elements in 'arr', // but strictly one after another; }); } 编辑 最初的答案build议我们只能对这些数组元素的结果进行sequence ,而不是对它们的执行,因为在这个例子中它是预定义的。 但是,那么如何以避免早期执行的方式生成一系列的promise? 这是一个修改的例子: function sequence(nextPromise) { // while nextPromise() creates and returns another promise, // continue resolving it; } 我不想把它作为一个单独的问题,因为我相信这是同一个问题的一部分。 解 下面的一些答案和后面的讨论有点不对劲,但是最终的解决scheme正是我所期待的,它是在spex库中作为方法序列实现的 。 该方法可以迭代一系列dynamic的长度,并根据应用程序的业务逻辑的需要创buildpromise。 后来我把它变成了一个供大家使用的共享库。
我正在顺利地履行承诺。 var getDelayedString = function(string) { var deferred = Q.defer(); setTimeout(function() { document.write(string+" "); deferred.resolve(); }, 500); return deferred.promise; }; var onceUponATime = function() { var strings = ["Once", "upon", "a", "time"]; var promiseFuncs = []; strings.forEach(function(str) { promiseFuncs.push(getDelayedString(str)); }); //return promiseFuncs.reduce(Q.when, Q()); return promiseFuncs.reduce(function (soFar, f) { return soFar.then(f); }, Q()); }; getDelayedString("Hello") .then(function() […]
我知道延迟分离承诺状态控制和处理,这里以Q为例,由Q.defer().promise和Q.Promise返回的Q.defer().promise是完全不同的,为什么这样devise呢? 这两个“承诺”有什么区别? 提前致谢 PS:我目前正在致力于一个Promise图书馆,欢迎提供证书和PRS: https : //github.com/XiaomingJS/Xiaoming.Promise
有人可以解释一下我的Promise vs Observable in Angular吗? 每个样本都将有助于理解这两种情况。 什么时候使用情况下的每个案例。
如何正确构造一个循环,以确保以下承诺调用和链式logger.log(res)通过迭代同步运行? (蓝鸟) db.getUser(email).then(function(res) { logger.log(res); }); // this is a promise 我尝试了以下方法(方法从http://blog.victorquinn.com/javascript-promise-while-loop ) var Promise = require('bluebird'); var promiseWhile = function(condition, action) { var resolver = Promise.defer(); var loop = function() { if (!condition()) return resolver.resolve(); return Promise.cast(action()) .then(loop) .catch(resolver.reject); }; process.nextTick(loop); return resolver.promise; }); var count = 0; promiseWhile(function() { return count < 10; […]
根据AngularJS doc ,调用$http返回如下内容: 使用标准then方法和两个特定于http的方法返回promise对象: 成功和错误 。 then方法接受两个参数成功和一个错误callback,这个callback将被一个响应对象调用。 成功和错误方法采用一个参数 – 一个函数,当请求成功或失败时将被调用。 传递给这些函数的参数是传递给then方法的响应对象的解构表示。 除了response对象在一个案例中被解构的事实,我没有区别 那么成功/错误的callback函数将作为promise.thenparameter passing callback函数作为promise的promise.success / promise.error方法的parameter passing 有没有? 这两种不同的方式通过看似相同的callback有什么意义?
递延,承诺和期货有什么区别? 这三者背后有一个普遍认可的理论吗?
在AngularJS中给定一个Ajax请求 $http.get("/backend/").success(callback); 如果发起另一个请求(相同的后端,例如不同的参数),取消该请求最有效的方法是什么。
比方说,我有一系列的networking请求的承诺,其中一个会失败: // http://does-not-exist will throw a TypeError var arr = [ fetch('index.html'), fetch('http://does-not-exist') ] Promise.all(arr) .then(res => console.log('success', res)) .catch(err => console.log('error', err)) // This is executed 可以说我想等到所有这些都完成了,不pipe是否失败。 可能会有一个networking错误的资源,我可以生活没有,但如果我能得到,我想在我继续之前。 我想优雅地处理networking故障。 由于Promises.all没有留下任何空间,所以build议使用这种方式,而不使用Promise库呢?