1. 程式人生 > >如何取到js非同步函式的回撥函式裡的值?

如何取到js非同步函式的回撥函式裡的值?

chrome.cookies.get函式是非同步的,如果這麼寫:

function getCookie(){
var result={};
chrome.cookies.get({'name':'prouserid','url':domain[0]}, function(cookie){
        result=cookie;
    });
}
return result;

那麼函式返回值只能是undefined,取不到cookie的值。

網友給了一個方法如下:

function getCookie(){
chrome.cookies.get({'name':'prouserid'
,'url':domain[0]}, function(cookie){ doNext(cookie); }); } function doNext(cookie){ console.log('123'); console.log(cookie); console.log('456'); }

就可以正常取到值了。

對於js的非同步函式的特性,還是要研究啊~~~

相關推薦

20181209——JS中的函式

字面上的理解,回撥函式就是一個引數,將這個函式作為引數傳到另一個函式裡面,當那個函式執行完之後,再執行傳進去的這個函式。這個過程就叫做回撥。 其實也很好理解對吧,回撥,回撥,就是回頭呼叫的意思。主函式的事先幹完,回頭再呼叫傳進來的那個函式。但是以前看過很多部落格,他們總是將回調函式解釋

js中的函式callback

前言其實我一直很困惑關於js 中的callback,困惑的原因是,學習中這塊看的資料少,但是平時又經常見,偶爾複製一下前人程式碼,功能實現了也就不再去追其原由,這麼著,這個callback的概念就越來越混亂,因為你總感覺它是你Ajax請求後呼叫的那個函式,又感覺它是你某一個函式中的形

QT5學習::(轉)非同步函式轉為同步函式的方法(即阻塞函式,等待非同步函式完成)

在QT中,一般推薦使用非同步函式。除了非同步函式的非阻塞特性外,QT的Signal/Slot特性在非同步函式中可以得到充分的發揮。因此,在QT中,很多API的設計都是使用非阻塞的非同步函式作為API,然後執行結果使用Signal返回。使用者執行API後使用slot函式接收反饋結果。

js 徹底理解函式

一、前奏 在談回撥函式之前,先看下下面兩段程式碼: 不妨猜測一下程式碼的結果。 function say (value) { alert(value); } alert(say); alert(say('hi js.')); 如果你測試了,就會發

ajax非同步執行函式內容

ajax執行目的:從findUserPageInfo.action方法獲取到值並且賦值給全域性變數homeU.ldCallInfo,然後再呼叫homeCallWinFun.addWinFun方法 Ext.define('com.aa.bb.HomeUtil', {ldCal

用谷歌的AsyncHttpClient簡單模仿安卓的AsyncHttpClient,實現非同步請求函式返回

實現思路 既然要呼叫Future.get() 才能激發訪問,那麼就想到了使用一個執行緒去訪問。我們就不需要等待阻塞了。 模仿安卓的AsyncHttpClient回撥。根據狀態回撥不同的函式。 實現的效果 執行程式碼...

js中的函式的理解和使用方法

原文地址:http://www.cnblogs.com/minshia/p/5935951.html 一. 回撥函式的作用 js程式碼會至上而下一條線執行下去,但是有時候我們需要等到一個操作結束之後再進行下一個操作,這時候就需要用到回撥函式。 二. 回撥函式的解釋

Go/函式/函式

## 回撥函式 package main import "fmt" type FuncType func (int,int) int //函式型別作為引數 func callBack(a,b int, f FuncType) (c int){ c = f(a,b) return }

總結-全域性環境&執行流程&錯誤型別&垃圾回收機制&閉包&函式&函式

全域性環境&執行流程&錯誤型別&垃圾回收機制&閉包&函式&回撥函式 全域性環境 1.函式中的this表示改函式所屬的物件 2.window物件的成員在呼叫時可以省略window 執行流程 1.編譯程式碼:當前scr

vue-cli專案中axios response函式使用箭頭函式 函式用this無反應問題

es6使用函式用的是箭頭函式,回撥函式中使用this 或在之前定義好的this,都沒問題; 但是有時es6語法在ie中不支援,修改時,改成一般函式形式,使用this,就會造成this指向找不到問題,也不報錯,打斷點不執行,好像阻塞了,所以之前需定義  var that =

onCreat 函式 函式

onCreate函式:註冊你要用到的變數,比如說service,receiver,這些變數是無論你的Activity是在前臺還是在後臺都能夠被響應到的,然後呼叫上面那個用來初始化的函式初始化佈局資訊。 onStart函式:註冊一些變數。這些變數必須在Android Activity類在前臺的時候才能夠被

如何js非同步函式函式

chrome.cookies.get函式是非同步的,如果這麼寫: function getCookie(){ var result={}; chrome.cookies.get({'name':'prouserid','url':domain[0]}, f

js同步非同步 函式

js同步非同步 同步 指的是一次只能完成一件任務。如果有多個任務,就必須排隊,前面一個任務完成,再執行後面一個任務,以此類推。 非同步 是指每一個任務有一個或多個回撥函式,前一個任務結束後,不是執行後一個任務,而是執行回撥函式,後一個任務則是不等前一個任務結束就

js中的for迴圈與非同步函式執行順序問題

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                for(i=localStorage.length-1;i>=0;i--){//從後往前依次取每條localstorage local_key=local

Node.js 函式來解決SQL語句與返回非同步問題

    作為一個剛剛接觸Node的菜鳥,面對Node的非同步問題著實是頭大。最近做一個前端的分頁問題,原始碼是順序執行兩條sql語句然後返回: client.query( //第一個sql 'SELECT * FROM products' ,

Node.js 非同步非阻塞的函式

回撥函式(非同步非阻塞) main.js 檔案 // 引入檔案模組 var fs = require('fs'); // 讀取test.txt檔案 fs.readFile('test.txt', f

js 非同步函式的用法

function gettime(){         var time;         $.ajax({           url:"?action=gettime",           async:false,           type:"GET",      

JS/JavaScript前臺非同步載入並呼叫函式

程式碼簡單直接貼程式碼 /** * 非同步載入依賴的javascript檔案 * src:script的路徑 * callback:當外部的javascript檔案被load的時候,執行的回撥 */ var loadAsyncScript = function (

js函式傳參

回撥函式是沒有引數的,那怎麼傳遞引數呢? 1 function getEntity(url,callBackFun){ 2 if(callBackFun!=undefined && typeof callBackFun=='function'){ 3 cal

Openlayers圖片資源source的imageCanvas的canvasFunction屬性函式

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>新增一個Canvas圖層</title> <script type="text/javascript"